home · contact · privacy
In testing, reduce verbosity of "repeat" command. master
authorChristian Heller <c.heller@plomlompom.de>
Sun, 19 Oct 2025 08:53:30 +0000 (10:53 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 19 Oct 2025 08:53:30 +0000 (10:53 +0200)
src/ircplom/testing.py
src/tests/_timeout_retries.test
src/tests/connect_disconnect_legalities.test
src/tests/error_disconnects.test
src/tests/pingpong.test
src/tests/test.test
src/tests/tui_draw.test

index 888322377d012c033bbf6db4475c8b409329fbb1..21251dabe95eabdbb15794a3502da4ea37e32f8b 100644 (file)
@@ -37,7 +37,7 @@ _N_ARGS_FOR_CMD = {
     _MARK_LOG: 2,
     _MARK_LOGSRVRMSG: 3,
     _MARK_PROMPT: 1,
-    _MARK_REPEAT: 3,
+    _MARK_REPEAT: 2,
     _MARK_SCREENLINE: 3,
     _MARK_SERVERMSG: 2,
     _MARK_WAIT: 1
@@ -222,21 +222,22 @@ class _Playbook:
                    **__
                    ) -> list[tuple[str, str]]:
             inserts: list[tuple[str, str]] = []
-            for inserted_t in self._lines_t[int(anchors[args[0]] + 1
-                                                ):int(anchors[args[1]])]:
+            for inserted_t in self._lines_t[
+                    int(anchors[args[0]+'-in'] + 1):
+                    int(anchors[args[0]+'-out'])]:
                 insert = inserted_t[1]
-                if len(args) == 3 and insert:
+                if len(args) == 2 and insert:
                     cmd_name, remains = insert.split(_SEP_0, maxsplit=1)
                     if cmd_name == _MARK_ANCHOR:
                         continue
                     args_ = list(self._args_for_cmd(cmd_name, remains))
-                    if args[2][0] in '+-':
+                    if args[1][0] in '+-':
                         args_[0] = _SEP_1.join(
-                                str(int(n) + int(args[2]))
+                                str(int(n) + int(args[1]))
                                 for n in args_[0].split(_SEP_1) if n
                                 ) or ','
                     else:
-                        args_[0] = args[2]
+                        args_[0] = args[1]
                     insert = _SEP_0.join([cmd_name] + args_)
                 inserts += [(index_str + ':r:' + inserted_t[0], insert)]
             return inserts
index 22f4be6586382baed7656ce8827a086721137b85..195aedd3e2a208063d3a8b883a1067fcf7bf9938 100644 (file)
@@ -59,23 +59,23 @@ log 1 >.. PING :what's up?
 servermsg 0 timeout
 servermsg 0 no timely PONG from server
 log 1 $.. connection_state set to: [broken: no timely PONG from server]
-repeat isupport-clear-in isupport-clear-out
+repeat isupport-clear
 log 1 $.. connection_state set to: []
 log , $.. DISCONNECTED
 log 1 $!. will retry connecting in 1 seconds
-repeat conn-full-in conn-full-out
+repeat conn-full
 
 # on second server, check timed auto-retries don't activate after manual intervention
 > /connect baz.bar.foo:10003 foo:bar baz:foobarbazquux
-repeat clientwin-init-in clientwin-init-out 2
+repeat clientwin-init 2
 log , $.. DISCONNECTED
 log 2 $.. hostname set to: [baz.bar.foo]
-repeat conn-init-retries-in conn-init-retries-out 2
+repeat conn-init-retries 2
 > /window 2
 > /reconnect
-repeat conn0-in conn0-out 2
+repeat conn0 2
 log , $.. CONNECTED
-repeat conn1-in conn1-out 2
+repeat conn1 2
 wait 4
 > /disconnect
 log 2 >.. QUIT :ircplom says bye
index be8eadcda3dae10bef8ee7dd897af1c37516ee0c..bed7b487b03b51068382e279af69fbd223ce666d 100644 (file)
@@ -35,7 +35,7 @@ log 1 $!. not re-connecting since already connected
 log 1 >.. QUIT :ircplom says bye
 loggedservermsg 0 1 <.. ERROR :Closing link: (whatever@whatever.com) [Quit: ircplom says bye]
 log 1 $.. connection_state set to: [Closing link: (whatever@whatever.com) [Quit: ircplom says bye]]
-repeat isupport-clear-in isupport-clear-out
+repeat isupport-clear
 log 1 $.. connection_state set to: []
 log , $.. DISCONNECTED
 
@@ -45,7 +45,7 @@ log 1 $!. cannot send, connection seems closed
 
 # succeed to re-connect after disconnect
 > /reconnect
-repeat connecting-in connecting-out
+repeat connecting
 
 > /quit
 log 0 <.. 
index 1ec55ba3ddb1867ac794419869079aeac83be953..e626d671aefd84378f99968cac4d78bb6ccf3d4d 100644 (file)
@@ -29,7 +29,7 @@ log 1 >.. NICK :foo
 loggedservermsg 0 1 <.. ERROR :abc def ghi
 log 1 $.. connection_state set to: [abc def ghi]
 | disconnecting-in
-repeat isupport-clear-in isupport-clear-out
+repeat isupport-clear
 log 1 $.. connection_state set to: []
 log , $.. DISCONNECTED
 | disconnecting-out
@@ -37,12 +37,12 @@ log , $.. DISCONNECTED
 # to prepare next test, get back to connected state
 > /window 1
 > /reconnect
-repeat connecting-in connecting-out
+repeat connecting
 
 # test "timed out)" ERROR handling
 loggedservermsg 0 1 <.. ERROR :Closing link: (Connection timed out)
 log 1 $.. connection_state set to: [Closing link: (Connection timed out)]
-repeat disconnecting-in disconnecting-out
+repeat disconnecting
 log 1 $!. will retry connecting in 1 seconds
 
 # over and out
index d6b98a74eb2c0120a98de1c66ed207abcbd6d6a7..ae5ea5f877028fb57fed5f6b3e598dd05c3a4d81 100644 (file)
@@ -42,11 +42,11 @@ loggedservermsg 0 1 <.. :*.?.net NOTICE * :*** Looking up your ident...
 log 2 <.. (server) *** Looking up your ident...
 
 # another timeout instead of pong? disconnect
-repeat trigger-ping-in trigger-ping-out
+repeat trigger-ping
 servermsg 0 timeout
 servermsg 0 no timely PONG from server
 log 1 $.. connection_state set to: [broken: no timely PONG from server]
-repeat isupport-clear-in isupport-clear-out
+repeat isupport-clear
 log 1 $.. connection_state set to: []
 log 2 $.. DISCONNECTED
 log 1 $!. will retry connecting in 1 seconds
@@ -55,10 +55,10 @@ log 1 $!. will retry connecting in 1 seconds
 # on re-connect, ensure timer cleared, i.e. only 2nd time-out will disconnect
 > /window 1
 > /reconnect
-repeat conn0-in conn0-out
+repeat conn0
 log 2 $.. CONNECTED
-repeat conn1-in conn1-out
-repeat full-timeout-in full-timeout-out
+repeat conn1
+repeat full-timeout
 
 > /quit
 log 0 <.. 
index a6c2cee7eb03e92bac8c2b812258b3f33bc5ebdc..c5bacb353e28c3991c1ba998f0b60589265ec65f 100644 (file)
@@ -331,7 +331,7 @@ log 5 $.. foo1!~foobarbaz@baz.bar.foo quits: Client Quit
 log 1 $.. channels:#testtest:exits:me cleared
 loggedservermsg 0 1 <.. ERROR :Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]
 log 1 $.. connection_state set to: [Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]]
-repeat isupport-clear-in isupport-clear-out
+repeat isupport-clear
 log 1 $.. caps cleared
 log 1 $.. channels cleared
 log 1 $.. connection_state set to: []
@@ -354,18 +354,18 @@ log 1 $!. not sending, since not in channel
 
 # test setting up second client, but 432 irrecoverably
 > /connect baz.bar.foo ?foo foo:foo
-repeat standard-clears-in standard-clears-out +7
+repeat standard-clears +7
 log 8 $.. hostname set to: [baz.bar.foo]
 log 8 $.. port set to: [-1]
 log 8 $.. nick_wanted set to: [?foo]
 log 8 $.. user_wanted set to: [foo]
 log 8 $.. realname set to: [foo]
-repeat conn-in conn-out +7
+repeat conn +7
 log 8 >.. USER foo 0 * :foo
 log 8 >.. NICK :?foo
 loggedservermsg 1 8 <.. :*.?.net 432 * ?foo :Erroneous nickname
 | disconnect-in
-repeat isupport-clear-in isupport-clear-out 8
+repeat isupport-clear 8
 log 8 $.. connection_state set to: []
 log , $.. DISCONNECTED
 | disconnect-out
@@ -373,28 +373,28 @@ log 8 $!. nickname refused for bad format, giving up
 
 # test failing third connection
 > /connect baz.baz.baz baz baz:baz
-repeat standard-clears-in standard-clears-out +8
+repeat standard-clears +8
 log 9 $.. hostname set to: [baz.baz.baz]
 log 9 $.. port set to: [-1]
 log 9 $.. nick_wanted set to: [baz]
 log 9 $.. user_wanted set to: [baz]
 log 9 $.. realname set to: [baz]
-repeat conn-in conn-out +8
+repeat conn +8
 log 9 >.. USER baz 0 * :baz
 log 9 >.. NICK :baz
 servermsg 2 FAKE_IRC_CONN_ABORT_EXCEPTION
 log 9 $.. connection_state set to: [broken: FAKE_IRC_CONN_ABORT_EXCEPTION]
-repeat disconnect-in disconnect-out +1
+repeat disconnect +1
 log 9 $!. will retry connecting in 1 seconds
 
 # check that (save TUI tests assuming start on window 0, and no 4 yet) on reconnect, all the same effects can be expected
 > /reconnect
-repeat conn0-in conn0-out
+repeat conn0
 log 2,3,4,5,6,7 $.. CONNECTED
-repeat conn1-in conn1-out
+repeat conn1
 log 1 >.. JOIN :#testtest
-repeat conn2-in conn2-out
-repeat conn3-in conn3-out
+repeat conn2
+repeat conn3
 
 > /quit
 log 0 <.. 
index cb8e5474fb37ab32cf0d7742905f9c761580cafd..b240133ed94ea17ed292a804e2282727118686b1 100644 (file)
@@ -6,19 +6,19 @@
 | lines-empty-1-in
 line 0 on_black,bright_white §§
 | lines-empty-1-out
-repeat lines-empty-1-in lines-empty-1-out 1
+repeat lines-empty-1 1
 | lines-empty-2-out
-repeat lines-empty-1-in lines-empty-1-out +2
-repeat lines-empty-1-in lines-empty-1-out +3
+repeat lines-empty-1 +2
+repeat lines-empty-1 +3
 | lines-empty-4-out
-repeat lines-empty-2-in lines-empty-2-out +4
-repeat lines-empty-2-in lines-empty-2-out +6
+repeat lines-empty-2 +4
+repeat lines-empty-2 +6
 | lines-empty-8-out
-repeat lines-empty-4-in lines-empty-4-out +8
-repeat lines-empty-4-in lines-empty-4-out +12
+repeat lines-empty-4 +8
+repeat lines-empty-4 +12
 | lines-empty-16-out
-repeat lines-empty-4-in lines-empty-4-out +16
-repeat lines-empty-2-in lines-empty-2-out +20
+repeat lines-empty-4 +16
+repeat lines-empty-2 +20
 | status-prompt-empty-in
 line 22 on_black,bright_white :start)=====================================================================([0]§§
 | prompt-empty-in
@@ -30,20 +30,20 @@ line 23 on_black,bright_white,reverse §§ §
 
 # nothing happening on empty command input
 > 
-repeat empty-init-in empty-init-out
+repeat empty-init
 
 # non-empty command input starts log at bottom, with date above it
 > foo
 log 0 #!. invalid prompt command: not prefixed by /
-repeat lines-empty-16-in lines-empty-16-out
-repeat lines-empty-4-in lines-empty-4-out +16
+repeat lines-empty-16
+repeat lines-empty-4 +16
 | history-lines-0:0:2-at-20-in
 | history-lines-0:0:1-at-20-in
 line 20 on_black,bright_white 20§§-§§-§§ §§
 | history-lines-0:0:1-at-20-out
 line 21 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: not prefixed by / §§
 | history-lines-0:0:2-at-20-out
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 
 # further inputs grow log upwards
 > /foo
@@ -51,37 +51,37 @@ log 0 #!. invalid prompt command: /foo unknown
 > /bar
 log 0 #!. invalid prompt command: /bar unknown
 | before-1st-scroll-in
-repeat lines-empty-16-in lines-empty-16-out
-repeat lines-empty-2-in lines-empty-2-out +16
+repeat lines-empty-16
+repeat lines-empty-2 +16
 | history-lines-0:0:4-at-18-in
-repeat history-lines-0:0:2-at-20-in history-lines-0:0:2-at-20-out -2
+repeat history-lines-0:0:2-at-20 -2
 | history-lines-0:2:4-at-20-in
 line 20 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /foo unknown §§
 line 21 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /bar unknown §§
 | history-lines-0:2:4-at-20-out
 | history-lines-0:0:4-at-18-out
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 | before-1st-scroll-out
 
 # check scrolling up on short history
 > /window.history.scroll up
 | after-1st-scroll-in
 | topmost-scroll-in
-repeat lines-empty-16-in lines-empty-16-out
-repeat lines-empty-4-in lines-empty-4-out +16
-repeat history-lines-0:0:1-at-20-in history-lines-0:0:1-at-20-out
+repeat lines-empty-16
+repeat lines-empty-4 +16
+repeat history-lines-0:0:1-at-20
 | topmost-scroll-out
 line 21 on_black,bright_white,reverse vvv [4] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 | after-1st-scroll-out
 
 # check scrolling down on short history
 > /window.history.scroll down
-repeat before-1st-scroll-in before-1st-scroll-out
+repeat before-1st-scroll
 
 # check history growing below up-scroll
 > /window.history.scroll up
-repeat after-1st-scroll-in after-1st-scroll-out
+repeat after-1st-scroll
 > /help
 log 0 #.. commands available in this window:
 log 0 #..   /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME]
@@ -96,18 +96,18 @@ log 0 #..   /window.prompt.backspace
 log 0 #..   /window.prompt.move_cursor DIRECTION
 log 0 #..   /window.prompt.scroll DIRECTION
 | before-scrolldown-not-to-bottom-in
-repeat topmost-scroll-in topmost-scroll-out
+repeat topmost-scroll
 line 21 on_black,bright_white,reverse vvv [16] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 | before-scrolldown-not-to-bottom-out
 
 # check scroll-down on newer history longer than half a screen width does not fully land at bottom
 > /window.history.scroll down
 | after-scrolldown-not-to-bottom-in
-repeat lines-empty-8-in lines-empty-8-out
-repeat lines-empty-1-in lines-empty-1-out +8
+repeat lines-empty-8
+repeat lines-empty-1 +8
 | history-lines-0:0:8-at-9-in
-repeat history-lines-0:0:4-at-18-in history-lines-0:0:4-at-18-out -9
+repeat history-lines-0:0:4-at-18 -9
 | history-lines-0:4:8-at-13-in
 | history-lines-0:4:5-at-13-in
 line 13 on_black,bright_cyan #.. §§:§§:§§ commands available in this window:§§
@@ -130,22 +130,22 @@ line 20 on_black,bright_cyan #.. §§:§§:§§   /window.history.scroll DIRECTI
 | history-lines-0:11:12-at-20-out
 | history-lines-0:8:12-at-17-out
 line 21 on_black,bright_white,reverse vvv [5] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 | after-scrolldown-not-to-bottom-out
 
 # check previous scroll-down not hitting bottom be fully reversible
 > /window.history.scroll up
-repeat before-scrolldown-not-to-bottom-in before-scrolldown-not-to-bottom-out
+repeat before-scrolldown-not-to-bottom
 > /window.history.scroll down
-repeat after-scrolldown-not-to-bottom-in after-scrolldown-not-to-bottom-out
+repeat after-scrolldown-not-to-bottom
 
 # scroll to bottom, check history still growing up even beyond upper fold
 > /window.history.scroll down
-repeat lines-empty-4-in lines-empty-4-out
-repeat lines-empty-2-in lines-empty-2-out +4
+repeat lines-empty-4
+repeat lines-empty-2 +4
 | history-lines-0:0:16-at-6-in
-repeat history-lines-0:0:8-at-9-in history-lines-0:0:8-at-9-out -3
-repeat history-lines-0:8:12-at-17-in history-lines-0:8:12-at-17-out -3
+repeat history-lines-0:0:8-at-9 -3
+repeat history-lines-0:8:12-at-17 -3
 | history-lines-0:12:16-at-18-in
 | history-lines-0:12:13-at-18-in
 line 18 on_black,bright_cyan #.. §§:§§:§§   /window.paste§§
@@ -155,7 +155,7 @@ line 20 on_black,bright_cyan #.. §§:§§:§§   /window.prompt.move_cursor DIR
 line 21 on_black,bright_cyan #.. §§:§§:§§   /window.prompt.scroll DIRECTION§§
 | history-lines-0:12:16-at-18-out
 | history-lines-0:0:16-at-6-out
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 > /0
 log 0 #!. invalid prompt command: /0 unknown
 > /1
@@ -173,10 +173,10 @@ log 0 #!. invalid prompt command: /6 unknown
 > /7
 log 0 #!. invalid prompt command: /7 unknown
 | at-bottom-before-wrapped-in
-repeat history-lines-0:2:4-at-20-in history-lines-0:2:4-at-20-out -20
-repeat history-lines-0:4:8-at-13-in history-lines-0:4:8-at-13-out -11
-repeat history-lines-0:8:12-at-17-in history-lines-0:8:12-at-17-out -11
-repeat history-lines-0:12:16-at-18-in history-lines-0:12:16-at-18-out -8
+repeat history-lines-0:2:4-at-20 -20
+repeat history-lines-0:4:8-at-13 -11
+repeat history-lines-0:8:12-at-17 -11
+repeat history-lines-0:12:16-at-18 -8
 | history-lines-0:16:24-at-14-in
 | history-lines-0:16:20-at-14-in
 | history-lines-0:16:18-at-14-in
@@ -197,19 +197,19 @@ line 20 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /6 u
 | history-lines-0:22:23-at-20-out
 line 21 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /7 unknown§§
 | history-lines-0:16:24-at-14-out
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 | at-bottom-before-wrapped-out
 
 # quick look one scroll up to check single-scroll increase of below-scroll count (when up-scroll not limited, and all lines un-wrapped)
 > /window.history.scroll up
-repeat lines-empty-8-in lines-empty-8-out
-repeat history-lines-0:0:8-at-9-in history-lines-0:0:8-at-9-out -1
-repeat history-lines-0:8:12-at-17-in history-lines-0:8:12-at-17-out -1
-repeat history-lines-0:12:13-at-18-in history-lines-0:12:13-at-18-out +2
+repeat lines-empty-8
+repeat history-lines-0:0:8-at-9 -1
+repeat history-lines-0:8:12-at-17 -1
+repeat history-lines-0:12:13-at-18 +2
 line 21 on_black,bright_white,reverse vvv [12] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 > /window.history.scroll down
-repeat at-bottom-before-wrapped-in at-bottom-before-wrapped-out
+repeat at-bottom-before-wrapped
 
 # # check wrapping
 > /foo_0123456789_0123456789_01234567
@@ -217,13 +217,13 @@ log 0 #!. invalid prompt command: /foo_0123456789_0123456789_01234567 unknown
 > /foo_0123456789_0123456789_012345678
 log 0 #!. invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
 | at-bottom-after-wrapped-in
-repeat history-lines-0:5:6-at-14-in history-lines-0:5:6-at-14-out -14
-repeat history-lines-0:6:8-at-15-in history-lines-0:6:8-at-15-out -14
+repeat history-lines-0:5:6-at-14 -14
+repeat history-lines-0:6:8-at-15 -14
 | history-lines-0:8:16-at-3-in
-repeat history-lines-0:8:12-at-17-in history-lines-0:8:12-at-17-out -14
-repeat history-lines-0:12:16-at-18-in history-lines-0:12:16-at-18-out -11
+repeat history-lines-0:8:12-at-17 -14
+repeat history-lines-0:12:16-at-18 -11
 | history-lines-0:8:16-at-3-out
-repeat history-lines-0:16:24-at-14-in history-lines-0:16:24-at-14-out -3
+repeat history-lines-0:16:24-at-14 -3
 | history-lines-0:24:26-at-19-in
 line 19 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /foo_0123456789_0123456789_01234567 unknown§§
 line 20 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /foo_0123456789_0123456789_012345678§§
@@ -231,59 +231,59 @@ line 20 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /foo
 | history-lines-0:26:27-at-21-in
 line 21 on_black,bright_red,bold     unknown§§
 | history-lines-0:26:27-at-21-out
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 | at-bottom-after-wrapped-out
 
 # check scroll-up over wrapped moves up less history lines than screen lines
 > /window.history.scroll up
 | scrollup-after-wrapped-in
-repeat lines-empty-4-in lines-empty-4-out
-repeat lines-empty-1-in lines-empty-1-out +4
-repeat history-lines-0:0:16-at-6-in history-lines-0:0:16-at-6-out -1
+repeat lines-empty-4
+repeat lines-empty-1 +4
+repeat history-lines-0:0:16-at-6 -1
 | scrollup-after-wrapped-out
 line 21 on_black,bright_white,reverse vvv [11] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 
 # check scroll-down fully reversible even if over wrapped
 > /window.history.scroll down
-repeat at-bottom-after-wrapped-in at-bottom-after-wrapped-out
+repeat at-bottom-after-wrapped
 > /window.history.scroll up
-repeat scrollup-after-wrapped-in scrollup-after-wrapped-out
+repeat scrollup-after-wrapped
 line 21 on_black,bright_white,reverse vvv [11] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 
 # check wrapped input only increases below-scroll count by one 
 > /bar_0123456789_0123456789_012345678
 log 0 #!. invalid prompt command: /bar_0123456789_0123456789_012345678 unknown
-repeat scrollup-after-wrapped-in scrollup-after-wrapped-out
+repeat scrollup-after-wrapped
 line 21 on_black,bright_white,reverse vvv [12] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 
 # check scroll-down over wrapped will snap down to bottom of wrapped
 > /window.history.scroll down
-repeat history-lines-0:6:8-at-15-in history-lines-0:6:8-at-15-out -15
-repeat history-lines-0:8:16-at-3-in history-lines-0:8:16-at-3-out -1
-repeat history-lines-0:16:24-at-14-in history-lines-0:16:24-at-14-out -4
-repeat history-lines-0:24:26-at-19-in history-lines-0:24:26-at-19-out -1
-repeat history-lines-0:26:27-at-21-in history-lines-0:26:27-at-21-out -1
+repeat history-lines-0:6:8-at-15 -15
+repeat history-lines-0:8:16-at-3 -1
+repeat history-lines-0:16:24-at-14 -4
+repeat history-lines-0:24:26-at-19 -1
+repeat history-lines-0:26:27-at-21 -1
 line 21 on_black,bright_white,reverse vvv [2] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 
 # # check scrolls-up over longer history until top
 > /window.history.scroll up
-repeat scrollup-after-wrapped-in scrollup-after-wrapped-out
+repeat scrollup-after-wrapped
 line 21 on_black,bright_white,reverse vvv [12] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 > /window.history.scroll up
-repeat lines-empty-16-in lines-empty-16-out
-repeat history-lines-0:0:4-at-18-in history-lines-0:0:4-at-18-out -2
-repeat history-lines-0:4:5-at-13-in history-lines-0:4:5-at-13-out +7
+repeat lines-empty-16
+repeat history-lines-0:0:4-at-18 -2
+repeat history-lines-0:4:5-at-13 +7
 line 21 on_black,bright_white,reverse vvv [23] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 > /window.history.scroll up
-repeat topmost-scroll-in topmost-scroll-out
+repeat topmost-scroll
 line 21 on_black,bright_white,reverse vvv [27] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-empty-in status-prompt-empty-out
+repeat status-prompt-empty
 
 # check that triggering creation of new window with new lines adds it to status, with unread-lines count
 > /connect foo.bar.baz foo bar:baz
@@ -307,18 +307,18 @@ log , $.. CONNECTED
 log 1 >.. CAP LS :302
 log 1 >.. USER baz 0 * :bar
 log 1 >.. NICK :foo
-repeat topmost-scroll-in topmost-scroll-out
+repeat topmost-scroll
 line 21 on_black,bright_white,reverse vvv [27] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 line 22 on_black,bright_white :start)==========================================================([(0:1)] (1:19)§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 # check switch to other window, updates to status line (movement of brackets, clearing of own unread-lines count)
 > /window 1
-repeat lines-empty-2-in lines-empty-2-out
-repeat lines-empty-1-in lines-empty-1-out +2
+repeat lines-empty-2
+repeat lines-empty-1 +2
 | history-lines-1:0:16-at-3-in
 | history-lines-1:0:8-at-3-in
-repeat history-lines-0:0:1-at-20-in history-lines-0:0:1-at-20-out -17
+repeat history-lines-0:0:1-at-20 -17
 line 4 on_black,bright_yellow $.. §§:§§:§§ isupport cleared
 line 5 on_black,bright_yellow $.. §§:§§:§§ isupport:CHANTYPES set to: [#&]
 line 6 on_black,bright_yellow $.. §§:§§:§§ isupport:PREFIX set to: [(ov)@+]
@@ -362,43 +362,43 @@ line 20 on_black,bright_green >.. §§:§§:§§ USER baz 0 * :bar§§
 line 21 on_black,bright_green >.. §§:§§:§§ NICK :foo§§
 | history-lines-1:18:19-at-21-out
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================((0:1) [1]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 # check switch-back to window 0, retaining clearing of window 1's unread-lines count
 > /window 0
-repeat topmost-scroll-in topmost-scroll-out
+repeat topmost-scroll
 line 21 on_black,bright_white,reverse vvv [27] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-after-first-return-in status-prompt-after-first-return-out
+repeat status-prompt-after-first-return
 | status-prompt-after-first-return-in
 line 22 on_black,bright_white :start)===============================================================([(0:1)] 1§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 | status-prompt-after-first-return-out
 
 # check that on full scroll-down, we now have a bookmark above the newest lines not previously scrolled into
 > /window.history.scroll down
-repeat lines-empty-8-in lines-empty-8-out
-repeat lines-empty-1-in lines-empty-1-out +8
-repeat history-lines-0:0:8-at-9-in history-lines-0:0:8-at-9-out
-repeat history-lines-0:8:12-at-17-in history-lines-0:8:12-at-17-out
+repeat lines-empty-8
+repeat lines-empty-1 +8
+repeat history-lines-0:0:8-at-9
+repeat history-lines-0:8:12-at-17
 line 21 on_black,bright_white,reverse vvv [16] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-after-first-return-in status-prompt-after-first-return-out
+repeat status-prompt-after-first-return
 > /window.history.scroll down
 | before-first-sight-of-bookmark-in
-repeat history-lines-0:2:4-at-20-in history-lines-0:2:4-at-20-out -20
-repeat history-lines-0:4:8-at-13-in history-lines-0:4:8-at-13-out -11
-repeat history-lines-0:8:16-at-3-in history-lines-0:8:16-at-3-out +3
-repeat history-lines-0:16:20-at-14-in history-lines-0:16:20-at-14-out
-repeat history-lines-0:20:22-at-18-in history-lines-0:20:22-at-18-out
-repeat history-lines-0:22:23-at-20-in history-lines-0:22:23-at-20-out
+repeat history-lines-0:2:4-at-20 -20
+repeat history-lines-0:4:8-at-13 -11
+repeat history-lines-0:8:16-at-3 +3
+repeat history-lines-0:16:20-at-14
+repeat history-lines-0:20:22-at-18
+repeat history-lines-0:22:23-at-20
 line 21 on_black,bright_white,reverse vvv [5] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-after-first-return-in status-prompt-after-first-return-out
+repeat status-prompt-after-first-return
 | before-first-sight-of-bookmark-out
 > /window.history.scroll down
 | first-sight-of-bookmark-in
-repeat history-lines-0:8:16-at-3-in history-lines-0:8:16-at-3-out -3
-repeat history-lines-0:16:24-at-14-in history-lines-0:16:24-at-14-out -6
-repeat history-lines-0:24:26-at-19-in history-lines-0:24:26-at-19-out -3
-repeat history-lines-0:26:27-at-21-in history-lines-0:26:27-at-21-out -3
+repeat history-lines-0:8:16-at-3 -3
+repeat history-lines-0:16:24-at-14 -6
+repeat history-lines-0:24:26-at-19 -3
+repeat history-lines-0:26:27-at-21 -3
 | bookmark-at-19-in
 line 19 on_black,bright_white --------------------------------------------------------------------------------§§
 | bookmark-at-19-out
@@ -408,45 +408,45 @@ line 20 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /bar
 | history-lines-0:28:29-at-21-in
 line 21 on_black,bright_red,bold     unknown§§
 | history-lines-0:28:29-at-21-out
-repeat status-prompt-after-first-return-in status-prompt-after-first-return-out
+repeat status-prompt-after-first-return
 | first-sight-of-bookmark-out
 
 # check that scrolling non-bottom bookmark out of sight, then scrolling it back into view again does not by itself move its position in the log history
 > /window.history.scroll up
-repeat lines-empty-2-in lines-empty-2-out
-repeat history-lines-0:0:16-at-6-in history-lines-0:0:16-at-6-out -4
-repeat history-lines-0:16:18-at-14-in history-lines-0:16:18-at-14-out +4
-repeat history-lines-0:18:19-at-16-in history-lines-0:18:19-at-16-out +4
+repeat lines-empty-2
+repeat history-lines-0:0:16-at-6 -4
+repeat history-lines-0:16:18-at-14 +4
+repeat history-lines-0:18:19-at-16 +4
 line 21 on_black,bright_white,reverse vvv [9] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-after-first-return-in status-prompt-after-first-return-out
+repeat status-prompt-after-first-return
 > /window.history.scroll down
-repeat first-sight-of-bookmark-in first-sight-of-bookmark-out
+repeat first-sight-of-bookmark
 
 # check that second switch to new window, previously left on bottom of history, establishes bookmark at bottom of log
 > /window 1
-repeat lines-empty-2-in lines-empty-2-out
-repeat history-lines-1:0:16-at-3-in history-lines-1:0:16-at-3-out -1
-repeat history-lines-1:16:18-at-19-in history-lines-1:16:18-at-19-out -1
-repeat history-lines-1:18:19-at-21-in history-lines-1:18:19-at-21-out -1
-repeat bookmark-at-19-in bookmark-at-19-out +2
+repeat lines-empty-2
+repeat history-lines-1:0:16-at-3 -1
+repeat history-lines-1:16:18-at-19 -1
+repeat history-lines-1:18:19-at-21 -1
+repeat bookmark-at-19 +2
 | status-prompt-both-empty-in
 line 22 on_black,bright_white foo.bar.baz:debug)========================================================(0 [1]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 | status-prompt-both-empty-out
 
 # check second switch-back places bookmark at bottom there too, since the newest lines previously succeeding it have now been read by us
 > /window 0
-repeat history-lines-0:8:16-at-3-in history-lines-0:8:16-at-3-out -3
-repeat history-lines-0:16:24-at-14-in history-lines-0:16:24-at-14-out -6
+repeat history-lines-0:8:16-at-3 -3
+repeat history-lines-0:16:24-at-14 -6
 | history-lines-0:24:28-at-16-in
-repeat history-lines-0:24:26-at-19-in history-lines-0:24:26-at-19-out -3
-repeat history-lines-0:26:27-at-21-in history-lines-0:26:27-at-21-out -3
-repeat history-lines-0:27:28-at-20-in history-lines-0:27:28-at-20-out -1
+repeat history-lines-0:24:26-at-19 -3
+repeat history-lines-0:26:27-at-21 -3
+repeat history-lines-0:27:28-at-20 -1
 | history-lines-0:24:28-at-16-out
-repeat history-lines-0:28:29-at-21-in history-lines-0:28:29-at-21-out -1
-repeat bookmark-at-19-in bookmark-at-19-out +2
+repeat history-lines-0:28:29-at-21 -1
+repeat bookmark-at-19 +2
 line 22 on_black,bright_white :start)===================================================================([0] 1§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 # check new lines push bookmark up
 > /list
@@ -454,12 +454,12 @@ log 0 #.. windows available via /window:
 log 0 #..   0) :start
 log 0 #..   1) foo.bar.baz:debug
 | before-first-server-responses-in
-repeat history-lines-0:11:12-at-20-in history-lines-0:11:12-at-20-out -20
-repeat history-lines-0:12:16-at-18-in history-lines-0:12:16-at-18-out -17
-repeat history-lines-0:16:24-at-14-in history-lines-0:16:24-at-14-out -9
-repeat history-lines-0:24:28-at-16-in history-lines-0:24:28-at-16-out -3
-repeat history-lines-0:28:29-at-21-in history-lines-0:28:29-at-21-out -4
-repeat bookmark-at-19-in bookmark-at-19-out -1
+repeat history-lines-0:11:12-at-20 -20
+repeat history-lines-0:12:16-at-18 -17
+repeat history-lines-0:16:24-at-14 -9
+repeat history-lines-0:24:28-at-16 -3
+repeat history-lines-0:28:29-at-21 -4
+repeat bookmark-at-19 -1
 | history-lines-0:29:30-at-19-in
 line 19 on_black,bright_cyan #.. §§:§§:§§ windows available via /window:§§
 | history-lines-0:29:30-at-19-out
@@ -469,24 +469,24 @@ line 21 on_black,bright_cyan #.. §§:§§:§§   1) foo.bar.baz:debug§§
 | history-lines-0:30:32-at-20-out
 | before-first-server-responses-out
 line 22 on_black,bright_white :start)===================================================================([0] 1§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 # check new lines growing in other window, one of which long enough to wrap, to be re-start count in status (with wrapped only as single) 
 loggedservermsg 0 1 <.. PING :?
 log 1 >.. PONG :?
 loggedservermsg 0 1 <.. PING :123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
 log 1 >.. PONG :123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
-repeat before-first-server-responses-in before-first-server-responses-out
+repeat before-first-server-responses
 line 22 on_black,bright_white :start)===============================================================([0] (1:4)§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 # check that switching to window with new lines, but left scroll-to-bottom, keeps the scroll-to-bottom, keeps bookmark after last line previously seen there
 > /window 1
-repeat history-lines-1:4:8-at-7-in history-lines-1:4:8-at-7-out -7
-repeat history-lines-1:8:16-at-11-in history-lines-1:8:16-at-11-out -7
-repeat history-lines-1:16:18-at-19-in history-lines-1:16:18-at-19-out -7
-repeat history-lines-1:18:19-at-21-in history-lines-1:18:19-at-21-out -7
-repeat bookmark-at-19-in bookmark-at-19-out -4
+repeat history-lines-1:4:8-at-7 -7
+repeat history-lines-1:8:16-at-11 -7
+repeat history-lines-1:16:18-at-19 -7
+repeat history-lines-1:18:19-at-21 -7
+repeat bookmark-at-19 -4
 | history-lines-1:19:20-at-16-in
 line 16 on_black,bright_white <.. §§:§§:§§ PING :?
 | history-lines-1:19:20-at-16-out
@@ -499,114 +499,114 @@ line 20 on_black,bright_green >.. §§:§§:§§ PONG :123456789 123456789 12345
 | history-lines-1:24:25-at-21-in
 line 21 on_black,bright_green     123456789 123456789§§
 | history-lines-1:24:25-at-21-out
-repeat status-prompt-both-empty-in status-prompt-both-empty-out
+repeat status-prompt-both-empty
 
 # check that growth below scroll does not by itself re-position bookmark in history
 > /window.history.scroll up
 loggedservermsg 0 1 <.. PING :foo
 log 1 >.. PONG :foo
 | early-win1-upscroll-in
-repeat lines-empty-4-in lines-empty-4-out
-repeat lines-empty-2-in lines-empty-2-out +4
-repeat history-lines-1:0:8-at-3-in history-lines-1:0:8-at-3-out +3
-repeat history-lines-1:8:12-at-11-in history-lines-1:8:12-at-11-out +3
-repeat history-lines-1:12:14-at-15-in history-lines-1:12:14-at-15-out +3
-repeat history-lines-1:14:15-at-17-in history-lines-1:14:15-at-17-out +3
+repeat lines-empty-4
+repeat lines-empty-2 +4
+repeat history-lines-1:0:8-at-3 +3
+repeat history-lines-1:8:12-at-11 +3
+repeat history-lines-1:12:14-at-15 +3
+repeat history-lines-1:14:15-at-17 +3
 | early-win1-upscroll-out
 line 21 on_black,bright_white,reverse vvv [11] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-both-empty-in status-prompt-both-empty-out
+repeat status-prompt-both-empty
 > /window.history.scroll down
-repeat history-lines-1:5:6-at-8-in history-lines-1:5:6-at-8-out -8
-repeat history-lines-1:6:8-at-9-in history-lines-1:6:8-at-9-out -8
-repeat history-lines-1:8:16-at-11-in history-lines-1:8:16-at-11-out -8
-repeat history-lines-1:16:18-at-19-in history-lines-1:16:18-at-19-out -8
-repeat history-lines-1:18:19-at-21-in history-lines-1:18:19-at-21-out -8
-repeat bookmark-at-19-in bookmark-at-19-out -5
-repeat history-lines-1:19:20-at-16-in history-lines-1:19:20-at-16-out -1
-repeat history-lines-1:20:24-at-17-in history-lines-1:20:24-at-17-out -1
-repeat history-lines-1:24:25-at-21-in history-lines-1:24:25-at-21-out -1
+repeat history-lines-1:5:6-at-8 -8
+repeat history-lines-1:6:8-at-9 -8
+repeat history-lines-1:8:16-at-11 -8
+repeat history-lines-1:16:18-at-19 -8
+repeat history-lines-1:18:19-at-21 -8
+repeat bookmark-at-19 -5
+repeat history-lines-1:19:20-at-16 -1
+repeat history-lines-1:20:24-at-17 -1
+repeat history-lines-1:24:25-at-21 -1
 line 21 on_black,bright_white,reverse vvv [3] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-both-empty-in status-prompt-both-empty-out
+repeat status-prompt-both-empty
 
 # check that with new lines left unread, switch away and back into window moves bookmark below newest read line, counts unread lines in status
 > /window 0
 | win-0-only-for-win-1-tests-in
-repeat history-lines-0:11:12-at-20-in history-lines-0:11:12-at-20-out -20
-repeat history-lines-0:12:16-at-18-in history-lines-0:12:16-at-18-out -17
-repeat history-lines-0:16:24-at-14-in history-lines-0:16:24-at-14-out -9
-repeat history-lines-0:24:28-at-16-in history-lines-0:24:28-at-16-out -3
-repeat history-lines-0:28:29-at-21-in history-lines-0:28:29-at-21-out -4
-repeat history-lines-0:29:30-at-19-in history-lines-0:29:30-at-19-out -1
-repeat history-lines-0:30:32-at-20-in history-lines-0:30:32-at-20-out -1
-repeat bookmark-at-19-in bookmark-at-19-out +2
+repeat history-lines-0:11:12-at-20 -20
+repeat history-lines-0:12:16-at-18 -17
+repeat history-lines-0:16:24-at-14 -9
+repeat history-lines-0:24:28-at-16 -3
+repeat history-lines-0:28:29-at-21 -4
+repeat history-lines-0:29:30-at-19 -1
+repeat history-lines-0:30:32-at-20 -1
+repeat bookmark-at-19 +2
 | win-0-only-for-win-1-tests-out
 line 22 on_black,bright_white :start)===============================================================([0] (1:2)§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 > /window 1
 | keep-bookmark-on-outside-growth-test-in
-repeat history-lines-1:5:6-at-8-in history-lines-1:5:6-at-8-out -8
-repeat history-lines-1:6:8-at-9-in history-lines-1:6:8-at-9-out -8
-repeat history-lines-1:8:16-at-11-in history-lines-1:8:16-at-11-out -8
+repeat history-lines-1:5:6-at-8 -8
+repeat history-lines-1:6:8-at-9 -8
+repeat history-lines-1:8:16-at-11 -8
 | history-lines-1:16:24-at-11-in
-repeat history-lines-1:16:18-at-19-in history-lines-1:16:18-at-19-out -8
-repeat history-lines-1:18:19-at-21-in history-lines-1:18:19-at-21-out -8
-repeat history-lines-1:19:20-at-16-in history-lines-1:19:20-at-16-out -2
-repeat history-lines-1:20:24-at-17-in history-lines-1:20:24-at-17-out -2
+repeat history-lines-1:16:18-at-19 -8
+repeat history-lines-1:18:19-at-21 -8
+repeat history-lines-1:19:20-at-16 -2
+repeat history-lines-1:20:24-at-17 -2
 | history-lines-1:16:24-at-11-out
-repeat history-lines-1:24:25-at-21-in history-lines-1:24:25-at-21-out -2
-repeat bookmark-at-19-in bookmark-at-19-out +1
+repeat history-lines-1:24:25-at-21 -2
+repeat bookmark-at-19 +1
 | keep-bookmark-on-outside-growth-test-out
 line 21 on_black,bright_white,reverse vvv [3] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:2)]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 # check that growing lines below scroll in other preserves non-bottom bookmark (left in sight on previous window leave)
 > /window 0
 loggedservermsg 0 1 <.. PING :bar
 log 1 >.. PONG :bar
-repeat win-0-only-for-win-1-tests-in win-0-only-for-win-1-tests-out
+repeat win-0-only-for-win-1-tests
 line 22 on_black,bright_white :start)===============================================================([0] (1:4)§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 > /window 1
-repeat keep-bookmark-on-outside-growth-test-in keep-bookmark-on-outside-growth-test-out
+repeat keep-bookmark-on-outside-growth-test
 line 21 on_black,bright_white,reverse vvv [5] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 | status-prompt-on-win1-4-unread-in
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:4)]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 | status-prompt-on-win1-4-unread-out
 
 # check same applies when leaving affected window with bookmark out-of-sight
 > /window.history.scroll up
-repeat early-win1-upscroll-in early-win1-upscroll-out
+repeat early-win1-upscroll
 line 21 on_black,bright_white,reverse vvv [13] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
-repeat status-prompt-on-win1-4-unread-in status-prompt-on-win1-4-unread-out
+repeat status-prompt-on-win1-4-unread
 > /window 0
 loggedservermsg 0 1 <.. PING :baz
 log 1 >.. PONG :baz
-repeat win-0-only-for-win-1-tests-in win-0-only-for-win-1-tests-out
+repeat win-0-only-for-win-1-tests
 line 22 on_black,bright_white :start)===============================================================([0] (1:6)§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 > /window 1
-repeat early-win1-upscroll-in early-win1-upscroll-out
+repeat early-win1-upscroll
 line 21 on_black,bright_white,reverse vvv [15] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:6)]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 > /window.history.scroll down
-repeat history-lines-1:5:6-at-8-in history-lines-1:5:6-at-8-out -8
-repeat history-lines-1:6:8-at-9-in history-lines-1:6:8-at-9-out -8
-repeat history-lines-1:8:16-at-11-in history-lines-1:8:16-at-11-out -8
-repeat history-lines-1:16:24-at-11-in history-lines-1:16:24-at-11-out
-repeat history-lines-1:24:25-at-21-in history-lines-1:24:25-at-21-out -2
-repeat bookmark-at-19-in bookmark-at-19-out +1
+repeat history-lines-1:5:6-at-8 -8
+repeat history-lines-1:6:8-at-9 -8
+repeat history-lines-1:8:16-at-11 -8
+repeat history-lines-1:16:24-at-11
+repeat history-lines-1:24:25-at-21 -2
+repeat bookmark-at-19 +1
 line 21 on_black,bright_white,reverse vvv [7] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:6)]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 > /window.history.scroll down
-repeat history-lines-1:10:12-at-13-in history-lines-1:10:12-at-13-out -13
-repeat history-lines-1:12:16-at-15-in history-lines-1:12:16-at-15-out -13
-repeat history-lines-1:16:24-at-11-in history-lines-1:16:24-at-11-out -5
-repeat history-lines-1:24:25-at-21-in history-lines-1:24:25-at-21-out -7
-repeat bookmark-at-19-in bookmark-at-19-out -4
+repeat history-lines-1:10:12-at-13 -13
+repeat history-lines-1:12:16-at-15 -13
+repeat history-lines-1:16:24-at-11 -5
+repeat history-lines-1:24:25-at-21 -7
+repeat bookmark-at-19 -4
 line 16 on_black,bright_white <.. §§:§§:§§ PING :foo
 line 17 on_black,bright_green >.. §§:§§:§§ PONG :foo
 line 18 on_black,bright_white <.. §§:§§:§§ PING :bar
@@ -614,7 +614,7 @@ line 19 on_black,bright_green >.. §§:§§:§§ PONG :bar
 line 20 on_black,bright_white <.. §§:§§:§§ PING :baz
 line 21 on_black,bright_green >.. §§:§§:§§ PONG :baz
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:6)]§§
-repeat prompt-empty-in prompt-empty-out
+repeat prompt-empty
 
 > /quit
 log 0 <..