× status-[0]-prompt
line 22 on_black,bright_white :start)=====================================================================([0]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0]-1-prompt
line 22 on_black,bright_white :start)===================================================================([0] 1§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0]-1:2-prompt
line 22 on_black,bright_white :start)===============================================================([0] (1:2)§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1:2]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:2)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0]-1:4-prompt
line 22 on_black,bright_white :start)===============================================================([0] (1:4)§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1:4]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:4)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0]-1:6-prompt
line 22 on_black,bright_white :start)===============================================================([0] (1:6)§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1:6]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:6)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1:7]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:7)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1:18]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)===================================================(0 [(1:18)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0]-1:29-prompt
line 22 on_black,bright_white :start)==============================================================([0] (1:29)§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1:29]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)===================================================(0 [(1:29)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0]-1:32-prompt
line 22 on_black,bright_white :start)==============================================================([0] (1:32)§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0-[1]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)========================================================(0 [1]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0:1]-prompt
line 22 on_black,bright_white :start)=================================================================([(0:1)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0:1]-1-prompt
line 22 on_black,bright_white :start)===============================================================([(0:1)] 1§§
-insert prompt-empty : +23
+insert prompt-empty
× status-0:1-[1]-prompt
line 22 on_black,bright_white foo.bar.baz:debug)====================================================((0:1) [1]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0:1]-1:19-prompt
line 22 on_black,bright_white :start)==========================================================([(0:1)] (1:19)§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0:3]-prompt
line 22 on_black,bright_white :start)=================================================================([(0:3)]§§
-insert prompt-empty : +23
+insert prompt-empty
× status-[0:12]-prompt
line 22 on_black,bright_white :start)================================================================([(0:12)]§§
-insert prompt-empty : +23
+insert prompt-empty
× history_0
line 0 on_black,bright_white 20§§-§§-§§ §§
×
-insert lines-empty : +0
-insert status-[0]-prompt : +22
+insert lines-empty
+insert status-[0]-prompt
# nothing happening on empty command input
>
-insert lines-empty : +0
-insert status-[0]-prompt : +22
+insert lines-empty
+insert status-[0]-prompt
# check scrolling on empty history does nothing
> /window.history.scroll up
-insert lines-empty : +0
-insert status-[0]-prompt : +22
+insert lines-empty
+insert status-[0]-prompt
> /window.history.scroll down
-insert lines-empty : +0
-insert status-[0]-prompt : +22
+insert lines-empty
+insert status-[0]-prompt
# non-empty command input starts log at bottom, with date above it
> foo
log 0 # invalid prompt command: not prefixed by /
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :2 +20
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# check scrolling on history merely 2 lines long won't do anything either
> /window.history.scroll up
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :2 +20
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
> /window.history.scroll down
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :2 +20
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# further inputs grow log upwards
> /foo
log 0 # invalid prompt command: /foo unknown
-insert lines-empty :19 +0
+insert lines-empty :19
insert history_0 :3 +19
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# check scrolling up does something on history 3 lines long
> /window.history.scroll up
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-2 : +21
-insert status-[0]-prompt : +22
+insert scrolldown-2
+insert status-[0]-prompt
# check scrolling down on 3-lines history
> /window.history.scroll down
-insert lines-empty :19 +0
+insert lines-empty :19
insert history_0 :3 +19
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# check history growing below up-scroll
> /window.history.scroll up
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-2 : +21
-insert status-[0]-prompt : +22
+insert scrolldown-2
+insert status-[0]-prompt
> /help
log 0 # commands available in this window:
log 0 # /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME]
log 0 # /window.prompt.backspace
log 0 # /window.prompt.move_cursor DIRECTION
log 0 # /window.prompt.scroll DIRECTION
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-14 : +21
-insert status-[0:12]-prompt : +22
+insert scrolldown-14
+insert status-[0:12]-prompt
# check scroll-down on newer history longer than half a screen width does not fully land at bottom
> /window.history.scroll down
-insert lines-empty :9 +0
+insert lines-empty :9
insert history_0 :12 +9
-insert scrolldown-3 : +21
-insert status-[0:3]-prompt : +22
+insert scrolldown-3
+insert status-[0:3]-prompt
# check previous scroll-down not hitting bottom be fully reversible
> /window.history.scroll up
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-14 : +21
-insert status-[0:3]-prompt : +22
+insert scrolldown-14
+insert status-[0:3]-prompt
> /window.history.scroll down
-insert lines-empty :9 +0
+insert lines-empty :9
insert history_0 :12 +9
-insert scrolldown-3 : +21
-insert status-[0:3]-prompt : +22
+insert scrolldown-3
+insert status-[0:3]-prompt
# scroll to bottom, check history still growing up even beyond upper fold
> /window.history.scroll down
-insert lines-empty :7 +0
+insert lines-empty :7
insert history_0 :15 +7
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
> /0
log 0 # invalid prompt command: /0 unknown
> /1
> /7
log 0 # invalid prompt command: /7 unknown
insert history_0 1:23 +0
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# check scroll-down even with long history does nothing
> /window.history.scroll down
insert history_0 1:23 +0
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# 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
-insert lines-empty :9 +0
+insert lines-empty :9
insert history_0 :12 +9
-insert scrolldown-11 : +21
-insert status-[0]-prompt : +22
+insert scrolldown-11
+insert status-[0]-prompt
# check wrapping
> /window.history.scroll down
> /foo_0123456789_0123456789_0123456789_
log 0 # invalid prompt command: /foo_0123456789_0123456789_0123456789_ unknown
insert history_0 4:26 +0
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
# check scroll-up over wrapped moves up less history lines than screen lines
> /window.history.scroll up
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_0 :15 +6
-insert scrolldown-10 : +21
-insert status-[0]-prompt : +22
+insert scrolldown-10
+insert status-[0]-prompt
# check scroll-down fully reversible even if over wrapped
> /window.history.scroll down
insert history_0 4:26 +0
-insert status-[0]-prompt : +22
+insert status-[0]-prompt
> /window.history.scroll up
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_0 :15 +6
-insert scrolldown-10 : +21
-insert status-[0]-prompt : +22
+insert scrolldown-10
+insert status-[0]-prompt
# check wrapped input only increases below-scroll count by one
> /bar_0123456789_0123456789_0123456789_
log 0 # invalid prompt command: /bar_0123456789_0123456789_0123456789_ unknown
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_0 :15 +6
-insert scrolldown-11 : +21
-insert status-[0:1]-prompt : +22
+insert scrolldown-11
+insert status-[0:1]-prompt
# check scroll-down over wrapped will snap down to bottom of wrapped
> /window.history.scroll down
insert history_0 5:26 +0
-insert scrolldown-1 : +21
-insert status-[0:1]-prompt : +22
+insert scrolldown-1
+insert status-[0:1]-prompt
# # check scrolls-up over longer history until top
> /window.history.scroll up
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_0 :15 +6
-insert scrolldown-11 : +21
-insert status-[0:1]-prompt : +22
+insert scrolldown-11
+insert status-[0:1]-prompt
> /window.history.scroll up
-insert lines-empty :17 +0
+insert lines-empty :17
insert history_0 :3 +17
-insert scrolldown-22 : +21
-insert status-[0:1]-prompt : +22
+insert scrolldown-22
+insert status-[0:1]-prompt
> /window.history.scroll up
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-25 : +21
-insert status-[0:1]-prompt : +22
+insert scrolldown-25
+insert status-[0:1]-prompt
# 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
log 1 > CAP LS :302
log 1 > USER baz 0 * :bar
log 1 > NICK :foo
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-25 : +21
-insert status-[0:1]-1:19-prompt : +22
+insert scrolldown-25
+insert status-[0:1]-1:19-prompt
# check switch to other window, updates to status line (movement of brackets, clearing of own unread-lines count)
> /window 1
-insert lines-empty :3 +0
+insert lines-empty :3
insert history_1 :19 +3
-insert status-0:1-[1]-prompt : +22
+insert status-0:1-[1]-prompt
# check switch-back to window 0, retaining clearing of window 1's unread-lines count
> /window 0
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_0 :1 +20
-insert scrolldown-25 : +21
-insert status-[0:1]-1-prompt : +22
+insert scrolldown-25
+insert status-[0:1]-1-prompt
# check that on full scroll-down, we now have a bookmark above the newest lines not previously scrolled into
> /window.history.scroll down
-insert lines-empty :9 +0
+insert lines-empty :9
insert history_0 :12 +9
-insert scrolldown-14 : +21
-insert status-[0:1]-1-prompt : +22
+insert scrolldown-14
+insert status-[0:1]-1-prompt
> /window.history.scroll down
insert history_0 2:23 +0
-insert scrolldown-3 : +21
-insert status-[0:1]-1-prompt : +22
+insert scrolldown-3
+insert status-[0:1]-1-prompt
> /window.history.scroll down
insert history_0 7:26 +0
insert bookmark : +19
insert history_0 26:28 +20
-insert status-[0]-1-prompt : +22
+insert status-[0]-1-prompt
# 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
-insert lines-empty :3 +0
+insert lines-empty :3
insert history_0 :18 +3
-insert scrolldown-8 : +21
-insert status-[0]-1-prompt : +22
+insert scrolldown-8
+insert status-[0]-1-prompt
> /window.history.scroll down
insert history_0 7:26 +0
insert bookmark : +19
insert history_0 26:28 +20
-insert status-[0]-1-prompt : +22
+insert status-[0]-1-prompt
# check that second switch to new window, previously left on bottom of history, establishes bookmark at bottom of log
> /window 1
-insert lines-empty :2 +0
+insert lines-empty :2
insert history_1 :19 +2
insert bookmark : +21
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
# 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
insert history_0 7:28 +0
insert bookmark : +21
-insert status-[0]-1-prompt : +22
+insert status-[0]-1-prompt
# check new lines push bookmark up
> /list
insert history_0 10:28 +0
insert bookmark : +18
insert history_0 28:31 +19
-insert status-[0]-1-prompt : +22
+insert status-[0]-1-prompt
# 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 :?
insert history_0 10:28 +0
insert bookmark : +18
insert history_0 28:31 +19
-insert status-[0]-1:4-prompt : +22
+insert status-[0]-1:4-prompt
# 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
insert history_1 4:19 +0
insert bookmark : +15
insert history_1 19:25 +16
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
### # 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
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_1 0:15 +6
-insert scrolldown-10 : +21
-insert status-0-[1:2]-prompt : +22
+insert scrolldown-10
+insert status-0-[1:2]-prompt
> /window.history.scroll down
insert history_1 5:19 +0
insert bookmark : +14
insert history_1 19:25 +15
-insert scrolldown-2 : +21
-insert status-0-[1:2]-prompt : +22
+insert scrolldown-2
+insert status-0-[1:2]-prompt
# 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
insert history_0 10:31 +0
insert bookmark : +21
-insert status-[0]-1:2-prompt : +22
+insert status-[0]-1:2-prompt
> /window 1
insert history_1 5:25 +0
insert bookmark : +20
-insert scrolldown-2 : +21
-insert status-0-[1:2]-prompt : +22
+insert scrolldown-2
+insert status-0-[1:2]-prompt
# check that growing lines below scroll in other preserves non-bottom bookmark (left in sight on previous window leave)
> /window 0
log 1 > PONG :bar
insert history_0 10:31 +0
insert bookmark : +21
-insert status-[0]-1:4-prompt : +22
+insert status-[0]-1:4-prompt
> /window 1
insert history_1 5:25 +0
insert bookmark : +20
-insert scrolldown-4 : +21
-insert status-0-[1:4]-prompt : +22
+insert scrolldown-4
+insert status-0-[1:4]-prompt
# check same applies when leaving affected window with bookmark out-of-sight
> /window.history.scroll up
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_1 :15 +6
-insert scrolldown-12 : +21
-insert status-0-[1:4]-prompt : +22
+insert scrolldown-12
+insert status-0-[1:4]-prompt
> /window 0
loggedservermsg 0 1 < PING :baz
log 1 > PONG :baz
insert history_0 10:31 +0
insert bookmark : +21
-insert status-[0]-1:6-prompt : +22
+insert status-[0]-1:6-prompt
> /window 1
-insert lines-empty :6 +0
+insert lines-empty :6
insert history_1 :15 +6
-insert scrolldown-14 : +21
-insert status-0-[1:6]-prompt : +22
+insert scrolldown-14
+insert status-0-[1:6]-prompt
> /window.history.scroll down
insert history_1 5:25 +0
insert bookmark : +20
-insert scrolldown-6 : +21
-insert status-0-[1:6]-prompt : +22
+insert scrolldown-6
+insert status-0-[1:6]-prompt
> /window.history.scroll down
insert history_1 10:25 +0
insert bookmark : +15
insert history_1 25:31 +16
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
# check log growth beyond max depth only remarkable after scrolling up to limit
loggedservermsg 0 1 < PING :0
insert history_1 12:25 +0
insert bookmark : +13
insert history_1 25:33 +14
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
> /window.history.scroll up
insert history_1 2:23 +0
-insert scrolldown-9 : +21
-insert status-0-[1]-prompt : +22
+insert scrolldown-9
+insert status-0-[1]-prompt
> /window.history.scroll up
-insert lines-empty :10 +0
+insert lines-empty :10
insert history_1 1:12 +10
-insert scrolldown-19 : +21
-insert status-0-[1]-prompt : +22
+insert scrolldown-19
+insert status-0-[1]-prompt
> /window.history.scroll up
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_1 1:2 +20
-insert scrolldown-29 : +21
-insert status-0-[1]-prompt : +22
+insert scrolldown-29
+insert status-0-[1]-prompt
# check cut-off log growth seen from topmost scroll not affecting scrolldown count, but unread-lines status
loggedservermsg 0 1 < PING :0
log 1 > PONG :0
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_1 3:4 +20
-insert scrolldown-29 : +21
-insert status-0-[1:2]-prompt : +22
+insert scrolldown-29
+insert status-0-[1:2]-prompt
# check unread-lines count potentially growing above max log depth if in other window
> /window 0
insert history_0 10:31 +0
insert bookmark : +21
-insert status-[0]-1:2-prompt : +22
+insert status-[0]-1:2-prompt
loggedservermsg 0 1 < PING :1
log 1 > PONG :1
loggedservermsg 0 1 < PING :2
log 1 > PONG :15
insert history_0 10:31 +0
insert bookmark : +21
-insert status-[0]-1:32-prompt : +22
+insert status-[0]-1:32-prompt
# check switching into window scrolled-top with more unread lines than max log depth shrinks former to latter, and scrolling down no bookmark is to be found
> /window 1
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_1 33:34 +20
-insert scrolldown-29 : +21
-insert status-0-[1:29]-prompt : +22
+insert scrolldown-29
+insert status-0-[1:29]-prompt
> /window.history.scroll down
-insert lines-empty :9 +0
+insert lines-empty :9
insert history_1 33:45 +9
-insert scrolldown-18 : +21
-insert status-0-[1:18]-prompt : +22
+insert scrolldown-18
+insert status-0-[1:18]-prompt
> /window.history.scroll down
insert history_1 35:56 +0
-insert scrolldown-7 : +21
-insert status-0-[1:7]-prompt : +22
+insert scrolldown-7
+insert status-0-[1:7]-prompt
> /window.history.scroll down
insert history_1 41:61 +0
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
# check bookmark remains absent with log growing while scrolled to bottom, …
loggedservermsg 0 1 < PING :16
log 1 > PONG :16
insert history_1 43:63 +0
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
# … as well as if further growth happens below scroll
> /window.history.scroll up
-insert lines-empty :2 +0
+insert lines-empty :2
insert history_1 35:54 +2
-insert scrolldown-11 : +21
-insert status-0-[1]-prompt : +22
+insert scrolldown-11
+insert status-0-[1]-prompt
loggedservermsg 0 1 < PING :17
log 1 > PONG :17
-insert lines-empty :4 +0
+insert lines-empty :4
insert history_1 37:54 +4
-insert scrolldown-13 : +21
-insert status-0-[1:2]-prompt : +22
+insert scrolldown-13
+insert status-0-[1:2]-prompt
> /window.history.scroll down
insert history_1 44:65 +0
-insert scrolldown-2 : +21
-insert status-0-[1:2]-prompt : +22
+insert scrolldown-2
+insert status-0-[1:2]-prompt
> /window.history.scroll down
insert history_1 45:67 +0
-insert status-0-[1]-prompt : +22
+insert status-0-[1]-prompt
# check unread-lines status not growing beyond max log if within active window, and …
> /window.history.scroll up
-insert lines-empty :2 +0
+insert lines-empty :2
insert history_1 37:54 +2
-insert scrolldown-11 : +21
-insert status-0-[1]-prompt : +22
+insert scrolldown-11
+insert status-0-[1]-prompt
loggedservermsg 0 1 < PING :18
log 1 > PONG :18
loggedservermsg 0 1 < PING :19
log 1 > PONG :31
loggedservermsg 0 1 < PING :32
log 1 > PONG :32
-insert lines-empty :20 +0
+insert lines-empty :20
insert history_1 67:68 +20
-insert scrolldown-29 : +21
-insert status-0-[1:29]-prompt : +22
+insert scrolldown-29
+insert status-0-[1:29]-prompt
# … setting bookmark visible after switching back-and-forth
> /window 0
insert history_0 10:31 +0
insert bookmark : +21
-insert status-[0]-1:29-prompt : +22
+insert status-[0]-1:29-prompt
> /window 1
-insert lines-empty :19 +0
+insert lines-empty :19
insert history_1 67:68 +19
insert bookmark : +20
-insert scrolldown-29 : +21
-insert status-0-[1:29]-prompt : +22
+insert scrolldown-29
+insert status-0-[1:29]-prompt
> /window.history.scroll down
-insert lines-empty :8 +0
+insert lines-empty :8
insert history_1 67:68 +8
insert bookmark : +9
insert history_1 68:79 +10
-insert scrolldown-18 : +21
-insert status-0-[1:18]-prompt : +22
+insert scrolldown-18
+insert status-0-[1:18]-prompt