terminal user interface to jujutsu. Focused on speed and clarity
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

finished tests

+44 -39
+8 -3
jj_tui/lib/ansiReverse.ml
··· 26 26 print_endline (Format.flush_str_formatter ()) 27 27 ;; 28 28 29 + (** Prints the attribute in a human readable format. 30 + Also replaces the escape character with \e. 31 + This means the output can be copy pasted into a terminal to test. 32 + like: `echo -e "attr: \e[0;31mTEXT\e[0m"` *) 29 33 let print_attr img = 30 34 print_endline "attr:"; 31 35 img |> Notty.Render.pp_attr @@ Format.str_formatter; 32 - print_endline (Format.flush_str_formatter ()) 36 + print_endline (Format.flush_str_formatter ()|>Str.global_replace (Str.regexp "\027") "\\e") 33 37 ;; 34 38 35 39 (** Like fold left except we run the first element through init to get the state*) ··· 193 197 194 198 [%expect 195 199 {| 196 - attr: 197 - [0m<[0;32mATTR[0m[K[0m>[0m |}] 200 + attr: 201 + \e[0m<\e[0;32mATTR\e[0m\e[K\e[0m>\e[0m 202 + |}] 198 203 ;; 199 204 200 205 let parse_ansi_escape_codes (input : string) =
+4 -4
jj_tui/lib/key_map.ml
··· 264 264 c: 265 265 title: Commit 266 266 sub: 267 + a: amend 268 + "n": new 267 269 s: 268 270 title: Squash 269 271 sub: 272 + C+i: interactive_rev 270 273 p: into_parent 271 - u: unsquash 272 274 r: into_rev 273 275 C+r: interactive_parent 274 - C+i: interactive_rev 275 - "n": new 276 - a: amend 276 + u: unsquash 277 277 |}] 278 278 ;; 279 279
+32 -32
jj_tui/test/lib/ansi.ml
··· 43 43 print_endline res; 44 44 [%expect 45 45 {| 46 - ====== input===== 47 - \n\226\151\137 \027[1m\027[38;5;5myq\027[0m\027[38;5;8mytskyk\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-13 09:34:43\027[39m \027[1m\027[38;5;4mb\027[0m\027[38;5;8m432b3c1\027[39m\n\226\148\130 test reorganise\n@ \027[1m\027[38;5;13mtw\027[38;5;8msoqryt\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;14m2024-05-13 09:34:43\027[39m \027[38;5;12m87\027[38;5;8md4ffad\027[39m\027[0m\n\226\148\130 \027[1mupdated flakes\027[0m\n\226\151\137 \027[1m\027[38;5;5mys\027[0m\027[38;5;8mzqynxv\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-13 08:22:36\027[39m \027[38;5;2mHEAD@git\027[39m \027[1m\027[38;5;4m65\027[0m\027[38;5;8md9b7dc\027[39m\n\226\148\130 opam template\n\226\151\137 \027[1m\027[38;5;5mkr\027[0m\027[38;5;8mzvxzyw\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-13 07:53:04\027[39m \027[1m\027[38;5;4m0c\027[0m\027[38;5;8mf0a9b8\027[39m\n\226\148\130 different strat\n\226\151\137 \027[1m\027[38;5;5ml\027[0m\027[38;5;8mzrkyqxq\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 20:28:46\027[39m \027[38;5;5mmaster?? master?? master@git master@origin\027[39m \027[1m\027[38;5;4me3\027[0m\027[38;5;8me2ba28\027[39m\n\226\148\130 remove vendor libs\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mq\027[0m\027[38;5;8mpqzkuss\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 21:07:29\027[39m \027[1m\027[38;5;4m5\027[0m\027[38;5;8m1e7fabe\027[39m\n\226\148\130 \226\148\130 \027[38;5;3m(no description set)\027[39m\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mx\027[0m\027[38;5;8mpqmtrmp\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 20:31:20\027[39m \027[1m\027[38;5;4me5\027[0m\027[38;5;8mcaae1c\027[39m\n\226\148\156\226\148\128\226\149\175 remove old nix file\n\226\151\137 \027[1m\027[38;5;5mzx\027[0m\027[38;5;8mpskuop\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 00:43:25\027[39m \027[1m\027[38;5;4m3\027[0m\027[38;5;8m3771185\027[39m\n\226\148\130 Update README.md\n\226\151\140 \027[38;5;8m(elided revisions)\027[39m\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mn\027[0m\027[38;5;8mwxyqxuv\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-11 14:11:37\027[39m \027[1m\027[38;5;4m89\027[0m\027[38;5;8m392bc6\027[39m\n\226\148\156\226\148\128\226\149\175 \027[38;5;3m(no description set)\027[39m\n\226\151\137 \027[1m\027[38;5;5mkm\027[0m\027[38;5;8mosytmo\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-11 14:11:37\027[39m \027[1m\027[38;5;4m4\027[0m\027[38;5;8m1122b29\027[39m\n\226\148\130 backup opam\n\226\151\140 \027[38;5;8m(elided revisions)\027[39m\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mto\027[0m\027[38;5;8moppyyl\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-11 03:29:14\027[39m \027[1m\027[38;5;4m6f\027[0m\027[38;5;8md850b1\027[39m\n\226\148\156\226\148\128\226\149\175 test\n\226\151\137 \027[1m\027[38;5;5mzz\027[0m\027[38;5;8mzzzzzz\027[39m \027[38;5;2mroot()\027[39m \027[1m\027[38;5;4m00\027[0m\027[38;5;8m000000\027[39m\n 48 - ====== output escaped===== 49 - \027[0m\027[K\027[0m\n\027[0m\226\151\137 \027[0;35myq\027[0;90mytskyk\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-13 09:34:43\027[0m \027[0;34mb\027[0m\027[K\027[0;90m432b3c1\027[0m\n\027[0m\027[K\027[0m\226\148\130 test reorganise\027[0m\n\027[0m@ \027[0;95mtw\027[0;90msoqryt\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;96m2024-05-13 09:34:43\027[0m \027[0;94m87\027[0m\027[K\027[0;90md4ffad\027[0m\n\027[0m\226\148\130 \027[0m\027[K\027[0;1mupdated flakes\027[0m\n\027[0m\226\151\137 \027[0;35mys\027[0;90mzqynxv\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-13 08:22:36\027[0m \027[0;32mHEAD@git\027[0m \027[0;34m65\027[0m\027[K\027[0;90md9b7dc\027[0m\n\027[0m\027[K\027[0m\226\148\130 opam template\027[0m\n\027[0m\226\151\137 \027[0;35mkr\027[0;90mzvxzyw\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-13 07:53:04\027[0m \027[0;34m0c\027[0m\027[K\027[0;90mf0a9b8\027[0m\n\027[0m\027[K\027[0m\226\148\130 different strat\027[0m\n\027[0m\226\151\137 \027[0;35ml\027[0;90mzrkyqxq\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 20:28:46\027[0m \027[0m\027[K\027[0;35mmaster?? master?? master@g\027[0m\n\027[0m\027[K\027[0m\226\148\130 remove vendor libs\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35mq\027[0;90mpqzkuss\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 21:07:29\027[0m \027[0;34m5\027[0m\027[K\027[0;90m1e7fabe\027[0m\n\027[0m\226\148\130 \226\148\130 \027[0m\027[K\027[0;33m(no description set)\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35mx\027[0;90mpqmtrmp\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 20:31:20\027[0m \027[0;34me5\027[0m\027[K\027[0;90mcaae1c\027[0m\n\027[0m\027[K\027[0m\226\148\156\226\148\128\226\149\175 remove old nix file\027[0m\n\027[0m\226\151\137 \027[0;35mzx\027[0;90mpskuop\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 00:43:25\027[0m \027[0;34m3\027[0m\027[K\027[0;90m3771185\027[0m\n\027[0m\027[K\027[0m\226\148\130 Update README.md\027[0m\n\027[0m\226\151\140 \027[0m\027[K\027[0;90m(elided revisions)\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35mn\027[0;90mwxyqxuv\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-11 14:11:37\027[0m \027[0;34m89\027[0m\027[K\027[0;90m392bc6\027[0m\n\027[0m\226\148\156\226\148\128\226\149\175 \027[0m\027[K\027[0;33m(no description set)\027[0m\n\027[0m\226\151\137 \027[0;35mkm\027[0;90mosytmo\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-11 14:11:37\027[0m \027[0;34m4\027[0m\027[K\027[0;90m1122b29\027[0m\n\027[0m\027[K\027[0m\226\148\130 backup opam\027[0m\n\027[0m\226\151\140 \027[0m\027[K\027[0;90m(elided revisions)\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35mto\027[0;90moppyyl\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-11 03:29:14\027[0m \027[0;34m6f\027[0m\027[K\027[0;90md850b1\027[0m\n\027[0m\027[K\027[0m\226\148\156\226\148\128\226\149\175 test\027[0m\n\027[0m\226\151\137 \027[0;35mzz\027[0;90mzzzzzz\027[0m \027[0;32mroot()\027[0m \027[0;34m00\027[0;90m000000\027[0m\027[K\027[0m \027[0m 50 - =====output==== 51 -  52 - ◉ yqytskyk eli.jambu@gmail.com 2024-05-13 09:34:43 b432b3c1 53 - │ test reorganise 54 - @ twsoqryt eli.jambu@gmail.com 2024-05-13 09:34:43 87d4ffad 55 - │ updated flakes 56 - ◉ yszqynxv eli.jambu@gmail.com 2024-05-13 08:22:36 HEAD@git 65d9b7dc 57 - │ opam template 58 - ◉ krzvxzyw eli.jambu@gmail.com 2024-05-13 07:53:04 0cf0a9b8 59 - │ different strat 60 - ◉ lzrkyqxq eli.jambu@gmail.com 2024-05-12 20:28:46 master?? master?? master@g 61 - │ remove vendor libs 62 - │ ◉ qpqzkuss eli.jambu@gmail.com 2024-05-12 21:07:29 51e7fabe 63 - │ │ (no description set) 64 - │ ◉ xpqmtrmp eli.jambu@gmail.com 2024-05-12 20:31:20 e5caae1c 65 - ├─╯ remove old nix file 66 - ◉ zxpskuop eli.jambu@gmail.com 2024-05-12 00:43:25 33771185 67 - │ Update README.md 68 - ◌ (elided revisions) 69 - │ ◉ nwxyqxuv eli.jambu@gmail.com 2024-05-11 14:11:37 89392bc6 70 - ├─╯ (no description set) 71 - ◉ kmosytmo eli.jambu@gmail.com 2024-05-11 14:11:37 41122b29 72 - │ backup opam 73 - ◌ (elided revisions) 74 - │ ◉ tooppyyl eli.jambu@gmail.com 2024-05-11 03:29:14 6fd850b1 75 - ├─╯ test 76 - ◉ zzzzzzzz root() 00000000  77 - |}] 46 + ====== input===== 47 + \n\226\151\137 \027[1m\027[38;5;5myq\027[0m\027[38;5;8mytskyk\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-13 09:34:43\027[39m \027[1m\027[38;5;4mb\027[0m\027[38;5;8m432b3c1\027[39m\n\226\148\130 test reorganise\n@ \027[1m\027[38;5;13mtw\027[38;5;8msoqryt\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;14m2024-05-13 09:34:43\027[39m \027[38;5;12m87\027[38;5;8md4ffad\027[39m\027[0m\n\226\148\130 \027[1mupdated flakes\027[0m\n\226\151\137 \027[1m\027[38;5;5mys\027[0m\027[38;5;8mzqynxv\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-13 08:22:36\027[39m \027[38;5;2mHEAD@git\027[39m \027[1m\027[38;5;4m65\027[0m\027[38;5;8md9b7dc\027[39m\n\226\148\130 opam template\n\226\151\137 \027[1m\027[38;5;5mkr\027[0m\027[38;5;8mzvxzyw\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-13 07:53:04\027[39m \027[1m\027[38;5;4m0c\027[0m\027[38;5;8mf0a9b8\027[39m\n\226\148\130 different strat\n\226\151\137 \027[1m\027[38;5;5ml\027[0m\027[38;5;8mzrkyqxq\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 20:28:46\027[39m \027[38;5;5mmaster?? master?? master@git master@origin\027[39m \027[1m\027[38;5;4me3\027[0m\027[38;5;8me2ba28\027[39m\n\226\148\130 remove vendor libs\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mq\027[0m\027[38;5;8mpqzkuss\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 21:07:29\027[39m \027[1m\027[38;5;4m5\027[0m\027[38;5;8m1e7fabe\027[39m\n\226\148\130 \226\148\130 \027[38;5;3m(no description set)\027[39m\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mx\027[0m\027[38;5;8mpqmtrmp\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 20:31:20\027[39m \027[1m\027[38;5;4me5\027[0m\027[38;5;8mcaae1c\027[39m\n\226\148\156\226\148\128\226\149\175 remove old nix file\n\226\151\137 \027[1m\027[38;5;5mzx\027[0m\027[38;5;8mpskuop\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-12 00:43:25\027[39m \027[1m\027[38;5;4m3\027[0m\027[38;5;8m3771185\027[39m\n\226\148\130 Update README.md\n\226\151\140 \027[38;5;8m(elided revisions)\027[39m\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mn\027[0m\027[38;5;8mwxyqxuv\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-11 14:11:37\027[39m \027[1m\027[38;5;4m89\027[0m\027[38;5;8m392bc6\027[39m\n\226\148\156\226\148\128\226\149\175 \027[38;5;3m(no description set)\027[39m\n\226\151\137 \027[1m\027[38;5;5mkm\027[0m\027[38;5;8mosytmo\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-11 14:11:37\027[39m \027[1m\027[38;5;4m4\027[0m\027[38;5;8m1122b29\027[39m\n\226\148\130 backup opam\n\226\151\140 \027[38;5;8m(elided revisions)\027[39m\n\226\148\130 \226\151\137 \027[1m\027[38;5;5mto\027[0m\027[38;5;8moppyyl\027[39m \027[38;5;3meli.jambu@gmail.com\027[39m \027[38;5;6m2024-05-11 03:29:14\027[39m \027[1m\027[38;5;4m6f\027[0m\027[38;5;8md850b1\027[39m\n\226\148\156\226\148\128\226\149\175 test\n\226\151\137 \027[1m\027[38;5;5mzz\027[0m\027[38;5;8mzzzzzz\027[39m \027[38;5;2mroot()\027[39m \027[1m\027[38;5;4m00\027[0m\027[38;5;8m000000\027[39m\n 48 + ====== output escaped===== 49 + \027[0m\027[K\027[0m\n\027[0m\226\151\137 \027[0;35;1myq\027[0;90mytskyk\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-13 09:34:43\027[0m \027[0;34;1mb\027[0m\027[K\027[0;90m432b3c1\027[0m\n\027[0m\027[K\027[0m\226\148\130 test reorganise\027[0m\n\027[0m@ \027[0;95;1mtw\027[0;90;1msoqryt\027[0;1m \027[0;33;1meli.jambu@gmail.com\027[0;1m \027[0;96;1m2024-05-13 09:34:43\027[0;1m \027[0;94;1m87\027[0m\027[K\027[0;90;1md4ffad\027[0m\n\027[0m\226\148\130 \027[0m\027[K\027[0;1mupdated flakes\027[0m\n\027[0m\226\151\137 \027[0;35;1mys\027[0;90mzqynxv\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-13 08:22:36\027[0m \027[0;32mHEAD@git\027[0m \027[0;34;1m65\027[0m\027[K\027[0;90md9b7dc\027[0m\n\027[0m\027[K\027[0m\226\148\130 opam template\027[0m\n\027[0m\226\151\137 \027[0;35;1mkr\027[0;90mzvxzyw\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-13 07:53:04\027[0m \027[0;34;1m0c\027[0m\027[K\027[0;90mf0a9b8\027[0m\n\027[0m\027[K\027[0m\226\148\130 different strat\027[0m\n\027[0m\226\151\137 \027[0;35;1ml\027[0;90mzrkyqxq\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 20:28:46\027[0m \027[0m\027[K\027[0;35mmaster?? master?? master@g\027[0m\n\027[0m\027[K\027[0m\226\148\130 remove vendor libs\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35;1mq\027[0;90mpqzkuss\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 21:07:29\027[0m \027[0;34;1m5\027[0m\027[K\027[0;90m1e7fabe\027[0m\n\027[0m\226\148\130 \226\148\130 \027[0m\027[K\027[0;33m(no description set)\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35;1mx\027[0;90mpqmtrmp\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 20:31:20\027[0m \027[0;34;1me5\027[0m\027[K\027[0;90mcaae1c\027[0m\n\027[0m\027[K\027[0m\226\148\156\226\148\128\226\149\175 remove old nix file\027[0m\n\027[0m\226\151\137 \027[0;35;1mzx\027[0;90mpskuop\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-12 00:43:25\027[0m \027[0;34;1m3\027[0m\027[K\027[0;90m3771185\027[0m\n\027[0m\027[K\027[0m\226\148\130 Update README.md\027[0m\n\027[0m\226\151\140 \027[0m\027[K\027[0;90m(elided revisions)\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35;1mn\027[0;90mwxyqxuv\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-11 14:11:37\027[0m \027[0;34;1m89\027[0m\027[K\027[0;90m392bc6\027[0m\n\027[0m\226\148\156\226\148\128\226\149\175 \027[0m\027[K\027[0;33m(no description set)\027[0m\n\027[0m\226\151\137 \027[0;35;1mkm\027[0;90mosytmo\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-11 14:11:37\027[0m \027[0;34;1m4\027[0m\027[K\027[0;90m1122b29\027[0m\n\027[0m\027[K\027[0m\226\148\130 backup opam\027[0m\n\027[0m\226\151\140 \027[0m\027[K\027[0;90m(elided revisions)\027[0m\n\027[0m\226\148\130 \226\151\137 \027[0;35;1mto\027[0;90moppyyl\027[0m \027[0;33meli.jambu@gmail.com\027[0m \027[0;36m2024-05-11 03:29:14\027[0m \027[0;34;1m6f\027[0m\027[K\027[0;90md850b1\027[0m\n\027[0m\027[K\027[0m\226\148\156\226\148\128\226\149\175 test\027[0m\n\027[0m\226\151\137 \027[0;35;1mzz\027[0;90mzzzzzz\027[0m \027[0;32mroot()\027[0m \027[0;34;1m00\027[0;90m000000\027[0m\027[K\027[0m \027[0m 50 + =====output==== 51 +  52 + ◉ yqytskyk eli.jambu@gmail.com 2024-05-13 09:34:43 b432b3c1 53 + │ test reorganise 54 + @ twsoqryt eli.jambu@gmail.com 2024-05-13 09:34:43 87d4ffad 55 + │ updated flakes 56 + ◉ yszqynxv eli.jambu@gmail.com 2024-05-13 08:22:36 HEAD@git 65d9b7dc 57 + │ opam template 58 + ◉ krzvxzyw eli.jambu@gmail.com 2024-05-13 07:53:04 0cf0a9b8 59 + │ different strat 60 + ◉ lzrkyqxq eli.jambu@gmail.com 2024-05-12 20:28:46 master?? master?? master@g 61 + │ remove vendor libs 62 + │ ◉ qpqzkuss eli.jambu@gmail.com 2024-05-12 21:07:29 51e7fabe 63 + │ │ (no description set) 64 + │ ◉ xpqmtrmp eli.jambu@gmail.com 2024-05-12 20:31:20 e5caae1c 65 + ├─╯ remove old nix file 66 + ◉ zxpskuop eli.jambu@gmail.com 2024-05-12 00:43:25 33771185 67 + │ Update README.md 68 + ◌ (elided revisions) 69 + │ ◉ nwxyqxuv eli.jambu@gmail.com 2024-05-11 14:11:37 89392bc6 70 + ├─╯ (no description set) 71 + ◉ kmosytmo eli.jambu@gmail.com 2024-05-11 14:11:37 41122b29 72 + │ backup opam 73 + ◌ (elided revisions) 74 + │ ◉ tooppyyl eli.jambu@gmail.com 2024-05-11 03:29:14 6fd850b1 75 + ├─╯ test 76 + ◉ zzzzzzzz root() 00000000  77 + |}] 78 78 ;; 79 79 80 80 (* let ansi =