summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2023-08-02 22:35:12 +1000
committerJesse Duffield <jessedduffield@gmail.com>2023-08-02 22:35:12 +1000
commitbb0601ae1fcc5363edb47a85059241c0e09e8a8a (patch)
treeab11240b558956a9e40bcf4715df4d0472824f1d
parent5099288efd82936f50d3c2d7b67004e0d8c6f5d6 (diff)
Add more demos
-rw-r--r--demo/amend_old_commit-compressed.gifbin0 -> 496554 bytes
-rw-r--r--demo/amend_old_commit.gifbin0 -> 3615514 bytes
-rw-r--r--demo/amend_old_commit.yml223
-rw-r--r--demo/bisect-compressed.gifbin0 -> 839857 bytes
-rw-r--r--demo/bisect.gifbin0 -> 7202603 bytes
-rw-r--r--demo/bisect.yml243
-rw-r--r--demo/cherry_pick-compressed.gifbin0 -> 354373 bytes
-rw-r--r--demo/cherry_pick.gifbin0 -> 2191231 bytes
-rw-r--r--demo/cherry_pick.yml188
-rw-r--r--demo/interactive_rebase-compressed.gifbin0 -> 840818 bytes
-rw-r--r--demo/interactive_rebase.gifbin0 -> 8794619 bytes
-rw-r--r--demo/interactive_rebase.yml275
12 files changed, 929 insertions, 0 deletions
diff --git a/demo/amend_old_commit-compressed.gif b/demo/amend_old_commit-compressed.gif
new file mode 100644
index 000000000..547d4c67d
--- /dev/null
+++ b/demo/amend_old_commit-compressed.gif
Binary files differ
diff --git a/demo/amend_old_commit.gif b/demo/amend_old_commit.gif
new file mode 100644
index 000000000..ce71550dc
--- /dev/null
+++ b/demo/amend_old_commit.gif
Binary files differ
diff --git a/demo/amend_old_commit.yml b/demo/amend_old_commit.yml
new file mode 100644
index 000000000..4fee2e0e1
--- /dev/null
+++ b/demo/amend_old_commit.yml
@@ -0,0 +1,223 @@
+# The configurations that used for the recording, feel free to edit them
+config:
+
+ # Specify a command to be executed
+ # like `/bin/bash -l`, `ls`, or any other commands
+ # the default is bash for Linux
+ # or powershell.exe for Windows
+ command: go run cmd/integration_test/main.go cli --slow pkg/integration/tests/demo/amend_old_commit.go
+
+ # Specify the current working directory path
+ # the default is the current working directory path
+ cwd: /Users/jesseduffieldduffield/repos/lazygit
+
+ # Export additional ENV variables
+ env:
+ recording: true
+
+ # Explicitly set the number of columns
+ # or use `auto` to take the current
+ # number of columns of your shell
+ cols: 120 # 100
+
+ # Explicitly set the number of rows
+ # or use `auto` to take the current
+ # number of rows of your shell
+ rows: 35 # 30
+
+ # Amount of times to repeat GIF
+ # If value is -1, play once
+ # If value is 0, loop indefinitely
+ # If value is a positive number, loop n times
+ repeat: 0
+
+ # Quality
+ # 1 - 100
+ # Higher quality seems to make no difference, but running it through
+ # gifsicle ends up with a much better compressed version.
+ quality: 100
+
+ # Delay between frames in ms
+ # If the value is `auto` use the actual recording delays
+ frameDelay: auto
+
+ # Maximum delay between frames in ms
+ # Ignored if the `frameDelay` isn't set to `auto`
+ # Set to `auto` to prevent limiting the max idle time
+ maxIdleTime: 2000
+
+ # The surrounding frame box
+ # The `type` can be null, window, floating, or solid`
+ # To hide the title use the value null
+ # Don't forget to add a backgroundColor style with a null as type
+ frameBox:
+ type: floating
+ title: Lazygit
+ style:
+ border: 0px black solid
+ backgroundColor: "#1d1d1d"
+ margin: -5px
+
+ # Add a watermark image to the rendered gif
+ # You need to specify an absolute path for
+ # the image on your machine or a URL, and you can also
+ # add your own CSS styles
+ watermark:
+ imagePath: null
+ style:
+ position: absolute
+ right: 15px
+ bottom: 15px
+ width: 100px
+ opacity: 0.9
+
+ # Cursor style can be one of
+ # `block`, `underline`, or `bar`
+ cursorStyle: block
+
+ # Font family
+ # You can use any font that is installed on your machine
+ # in CSS-like syntax
+ fontFamily: "DejaVuSansMono Nerd Font"
+
+ # The size of the font
+ fontSize: 8
+
+ # The height of lines
+ lineHeight: 1
+
+ # The spacing between letters
+ letterSpacing: 0
+
+ # Theme
+ theme:
+ background: "transparent"
+ foreground: "#dddad6"
+ cursor: "#c7c7c7"
+ black: "#7a7a7a"
+ red: "#fc4384"
+ green: "#b3e33b"
+ yellow: "#ffa727"
+ blue: "#102895"
+ magenta: "#c930c7"
+ cyan: "#00c5c7"
+ white: "#c7c7c7"
+ brightBlack: "#676767"
+ brightRed: "#ff7fac"
+ brightGreen: "#c8ed71"
+ brightYellow: "#ebdf86"
+ brightBlue: "#6871ff"
+ brightMagenta: "#ff76ff"
+ brightCyan: "#5ffdff"
+ brightWhite: "#fffefe"
+
+# Records, feel free to edit them
+records:
+ - delay: 1257
+ content: '^[[<35;75;31M^[[<35;74;31M^[[O'
+ - delay: 6410
+ content: "\e[?1000l\e[?1002l\e[?1003l\e[?1006l\e[?2004l\e[?1049h\e[22;0;0t\e[?1h\e=\e[?25l\e[H\e[2J\e[?1000l\e[?1002l\e[?1003l\e[?1006l\e[?1000h\e[?1002h\e[?1003h\e[?1006h\e[?1004h"
+ - delay: 103
+ content: "\e[?25l\e[1;1H\e(B\e[m\e[30m\e]8;;\e\\┌─Status───────────────────────────────┐┌─Diff─────────────────────────────────────────────────────────────────────────┐\e[2;1H│\e(B\e[m\e[32m\e]8;;\e\\✓\e(B\e[m\e]8;;\e\\ repo → \e(B\e[m\e[32m\e]8;;\e\\feature/demo\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\No changed files \e(B\e[m\e[30m\e]8;;\e\\│\e[3;1H└──────────────────────────────────────┘│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[4;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Files \e(B\e[m\e]8;;\e\\- Worktrees - Submodules\e(B\e[m\e[32m\e[1m\e]8;;\e\\───────┐\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[5;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[6;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[7;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[8;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[9;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[10;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[11;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[12;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[13;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\└──────────────────────────────────────┘\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[14;1H┌─\e(B\e[m\e[32m\e]8;;\e\\Local branches \e(B\e[m\e[30m\e]8;;\e\\- Remotes - Tags──────┐│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[15;1H│\e(B\e[m\e[32m\e]8;;\e\\ *\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\שׂ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\feature/demo\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\✓\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[16;1H│\e(B\e[m\e[36m\e]8;;\e\\1s\e(B\e[m\e]8;;\e\\ שׂ master \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[17;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[18;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[19;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[20;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[21;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[22;1H└───────────────────────────────1 of 2─┘│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[23;1H┌─\e(B\e[m\e[32m\e]8;;\e\\Commits \e(B\e[m\e[30m\e]8;;\e\\- Reflog─────────────────────┐│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[24;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\5facfd26\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Add a user-friendly 404 \e(B\e[m\e[30m\e]8;;\e\\▲│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[25;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\8721a960\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Set up CI/CD pipeline us\e(B\e[m\e[30m\e]8;;\e\\█│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[26;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\86cf6840\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Enable gzip compression \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[27;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\37764ffe\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Refactor error messages \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[28;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\00286e9e\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Improve accessibility of\e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[29;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\4a57e4d3\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Add loading indicators t\e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[30;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\43ed3a37\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Add end-to-end tests for\e(B\e[m\e[30m\e]8;;\e\\▼│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[31;1H└──────────────────────────────1 of 60─┘└──────────────────────────────────────────────────────────────────────────────┘\e[32;1H┌─Stash────────────────────────────────┐┌─Command log──────────────────────────────────────────────────────────────────┐\e[33;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[34;1H└───────────────────────────────0 of 0─┘└──────────────────────────────────────────────────────────────────────────────┘\e[35;1H\e(B\e[m\e[34m\e]8;;\e\\<pgup>/<pgdown>: Scroll, <esc>: Cancel, q: Quit, ?: Keybindings, 1-5: Jump to panel, H/L: Scroll left/right \e[?25l\e[?25l\e[1;43H\e(B\e[m\e[30m\e]8;;\e\\Unstaged changes\e[5;2H\e(B\e[m\e[91;44m\e[1m\e]8;;\e\\ M  navigation/site_navigation.go\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e[6;2H\e(B\e[m\e[31m\e]8;;\e\\??  docs/README.md \e[13;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\1 of 2\e[?25l"
+ - delay: 10
+ content: "\e[?25l\e[2;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/navigation/site_navigation.go b/navigation/site_navigation.go\e[2;120H\e(B\e[m\e[30m\e]8;;\e\\▲\e[3;42H\e(B\e[m\e[1m\e]8;;\e\\index 644e7ed..ba10353 100644\e[3;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[4;42H\e(B\e[m\e[1m\e]8;;\e\\--- a/navigation/site_navigation.go\e[4;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[5;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/navigation/site_navigation.go\e[5;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[6;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -1 +1,5 @@\e[6;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[7;42H\e(B\e[m\e[31m\e]8;;\e\\-package navigation\e[7;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[8;42H\e(B\e[m\e]8;;\e\\\\\e[8;44HNo\e[8;47Hnewline\e[8;55Hat\e[8;58Hend\e[8;62Hof\e[8;65Hfile\e[8;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[9;42H\e(B\e[m\e[32m\e]8;;\e\\+package navigation\e[9;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[10;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[10;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[11;42H\e(B\e[m\e[32m\e]8;;\e\\+func Navigate() {\e[11;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[12;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[12;46Hpanic(\"unimplemented\")\e[12;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[13;42H\e(B\e[m\e[32m\e]8;;\e\\+}\e[13;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[14;42H\e(B\e[m\e]8;;\e\\\\\e[14;44HNo\e[14;47Hnewline\e[14;55Hat\e[14;58Hend\e[14;62Hof\e[14;65Hfile\e[14;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[15;120H█\e[16;120H█\e[17;120H█\e[18;120H█\e[19;120H█\e[20;120H█\e[30;120H▼\e[?25l\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\Amend\e[35;7Han\e[35;10Hold\e[35;14Hcommit\e[?25l"
+ - delay: 1002
+ content: "\e[?25l\e[35;21H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing <space> \e[?25l"
+ - delay: 31
+ content: "\e[?25l\e[1;43H\e(B\e[m\e[30m\e]8;;\e\\Staged changes──\e[2;42H\e(B\e[m\e]8;;\e\\ \e[2;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[3;42H\e(B\e[m\e]8;;\e\\ \e[3;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[4;42H\e(B\e[m\e]8;;\e\\ \e[4;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[5;2H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\M  navigation/site_navigation.go\e[5;42H\e(B\e[m\e]8;;\e\\ \e[5;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[6;42H\e(B\e[m\e]8;;\e\\ \e[6;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[7;42H\e(B\e[m\e]8;;\e\\ \e[7;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[8;42H\e(B\e[m\e]8;;\e\\ \e[8;44H \e[8;47H \e[8;55H \e[8;58H \e[8;62H \e[8;65H \e[8;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[9;42H\e(B\e[m\e]8;;\e\\ \e[9;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[10;42H\e(B\e[m\e]8;;\e\\ \e[10;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[11;42H\e(B\e[m\e]8;;\e\\ \e[11;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[12;42H\e(B\e[m\e]8;;\e\\ \e[12;46H \e[12;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[13;42H\e(B\e[m\e]8;;\e\\ \e[13;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[14;42H\e(B\e[m\e]8;;\e\\ \e[14;44H \e[14;47H \e[14;55H \e[14;58H \e[14;62H \e[14;65H \e[14;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[15;120H│\e[16;120H│\e[17;120H│\e[18;120H│\e[19;120H│\e[20;120H│\e[30;120H│\e[33;44H\e(B\e[m\e]8;;\e\\git\e[33;48Hadd\e[33;52H--\e[33;55Hnavigation/site_navigation.go\e[?25l\e[?25l\e[?25l"
+ - delay: 8
+ content: "\e[?25l\e[2;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/navigation/site_navigation.go b/navigation/site_navigation.go\e[2;120H\e(B\e[m\e[30m\e]8;;\e\\▲\e[3;42H\e(B\e[m\e[1m\e]8;;\e\\index 644e7ed..ba10353 100644\e[3;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[4;42H\e(B\e[m\e[1m\e]8;;\e\\--- a/navigation/site_navigation.go\e[4;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[5;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/navigation/site_navigation.go\e[5;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[6;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -1 +1,5 @@\e[6;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[7;42H\e(B\e[m\e[31m\e]8;;\e\\-package navigation\e[7;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[8;42H\e(B\e[m\e]8;;\e\\\\\e[8;44HNo\e[8;47Hnewline\e[8;55Hat\e[8;58Hend\e[8;62Hof\e[8;65Hfile\e[8;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[9;42H\e(B\e[m\e[32m\e]8;;\e\\+package navigation\e[9;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[10;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[10;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[11;42H\e(B\e[m\e[32m\e]8;;\e\\+func Navigate() {\e[11;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[12;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[12;46Hpanic(\"unimplemented\")\e[12;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[13;42H\e(B\e[m\e[32m\e]8;;\e\\+}\e[13;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[14;42H\e(B\e[m\e]8;;\e\\\\\e[14;44HNo\e[14;47Hnewline\e[14;55Hat\e[14;58Hend\e[14;62Hof\e[14;65Hfile\e[14;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[15;120H█\e[16;120H█\e[17;120H█\e[18;120H█\e[19;120H█\e[20;120H█\e[30;120H▼\e[?25l"
+ - delay: 603
+ content: "\e[?25l\e[35;30H\e(B\e[m\e[36m\e[1m\e]8;;\e\\4 \e[?25l\e[?25l\e[1;43H\e(B\e[m\e[30m\e]8;;\e\\Patch─────────\e[4;1H┌─\e(B\e[m\e[32m\e]8;;\e\\Files \e(B\e[m\e[30m\e]8;;\e\\- Worktrees - Submodules───────┐\e[5;1H│\e(B\e[m\e[32m\e]8;;\e\\M  navigation/site_navigation.go\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[6;1H│\e[6;40H│\e[7;1H│\e[7;40H│\e[8;1H│\e[8;40H│\e[9;1H│\e[9;40H│\e[10;1H│\e[10;40H│\e[11;1H│\e[11;40H│\e[12;1H│\e[12;40H│\e[13;1H└───────────────────────────────1 of 2─┘\e[23;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Commits \e(B\e[m\e]8;;\e\\- Reflog\e(B\e[m\e[32m\e[1m\e]8;;\e\\─────────────────────┐\e[24;1H│\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\5facfd26\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e[44m\e[1m\e]8;;\e\\CI\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Add a user-friendly 404 \e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[25;1H│\e[25;40H█\e[26;1H│\e[26;40H│\e[27;1H│\e[27;40H│\e[28;1H│\e[28;40H│\e[29;1H│\e[29;40H│\e[30;1H│\e[30;40H▼\e[31;1H└──────────────────────────────1 of 60─┘\e[?25l"
+ - delay: 11
+ content: "\e[?25l\e[2;42H\e(B\e[m\e[33m\e]8;;\e\\commit 5facfd26d12c00df31060362519a9d49bbe42b1d (\e(B\e[m\e[36m\e[1m\e]8;;\e\\HEAD -> \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/demo\e(B\e[m\e[33m\e]8;;\e\\, \e[3;42H\e(B\e[m\e[31m\e[1m\e]8;;\e\\origin/master\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[31m\e[1m\e]8;;\e\\origin/feature/demo\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\master\e(B\e[m\e[33m\e]8;;\e\\)\e[4;42H\e(B\e[m\e]8;;\e\\Author: CI <CI@example.com> \e[5;42HDate: Wed Aug 2 22:23:33 2023 +1000\e[6;42H \e[7;42H Add a user-friendly\e[7;66H404\e[7;70Hpage\e[8;42H--- \e[8;47H \e[8;55H \e[8;58H \e[8;62H \e[8;65H \e[9;42H pages/404.html | 1\e[9;62H\e(B\e[m\e[32m\e]8;;\e\\+\e[10;42H\e(B\e[m\e]8;;\e\\ 1\e[10;45Hfile\e[10;50Hchanged,\e[10;59H1\e[10;61Hinsertion(+)\e[11;42H \e[12;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/pages/404.html b/pages/404.html\e[13;42Hnew file mode 100644\e[14;42Hindex 0000000..6c70bcf\e[14;65H\e(B\e[m\e]8;;\e\\ \e[15;42H\e(B\e[m\e[1m\e]8;;\e\\--- /dev/null\e[16;42H+++ b/pages/404.html\e[17;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e[18;42H\e(B\e[m\e[32m\e]8;;\e\\+<html></html>\e[19;42H\e(B\e[m\e]8;;\e\\\\\e[19;44HNo\e[19;47Hnewline\e[19;55Hat\e[19;58Hend\e[19;62Hof\e[19;65Hfile\e[19;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;120H│\e[?25l"
+ - delay: 604
+ content: "\e[?25l\e[35;21H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[24;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\5facfd26\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Add a user-friendly 404 \e[25;2H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\8721a960\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e[44m\e[1m\e]8;;\e\\CI\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Set up CI/CD pipeline us\e[31;32H\e(B\e[m\e[32m\e[1m\e]8;;\e\\2\e[?25l"
+ - delay: 12
+ content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\8721a9601851e8c\e[2;65H153d58573767\e[2;78H458685ad437\e(B\e[m\e]8;;\e\\ \e[3;42HAuthor: CI <CI@example.com> \e[4;42HDa\e[4;45He: \e[4;50HWed Aug 2 22:23:33 2023\e[4;74H+1000\e[5;42H \e[5;50H \e[5;54H \e[5;58H \e[5;60H \e[5;69H \e[5;74H \e[6;46HSet\e[6;50Hup\e[6;53HCI/CD\e[6;59Hpipeline\e[6;68Husing\e[6;74HGitHub\e[6;81Hactions\e[7;42H---\e[7;46H \e[7;50H \e[7;52H \e[7;66H \e[7;70H \e[8;42H .github/workflows/ci.yml\e[8;68H|\e[8;70H1\e[8;72H\e(B\e[m\e[32m\e]8;;\e\\+\e[9;43H\e(B\e[m\e]8;;\e\\1 file changed, 1 insertion(+)\e[10;43H \e[10;45H \e[10;50H \e[10;59H \e[10;61H \e[11;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml\e[12;42Hnew file mode 10064\e[12;62H\e(B\e[m\e]8;;\e\\ \e[13;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..29f9c6d\e[14;42H--- /dev/null\e(B\e[m\e]8;;\e\\ \e[15;42H\e(B\e[m\e[1m\e]8;;\e\\+++\e[15;46Hb/.github/workflows/ci.yml\e[16;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e(B\e[m\e]8;;\e\\ \e[17;42H\e(B\e[m\e[32m\e]8;;\e\\+name: CI\e(B\e[m\e]8;;\e\\ \e[18;42H\\ No newline at\e[18;58Hend\e[18;62Hof\e[18;65Hfile\e[19;42H \e[19;44H \e[19;47H \e[19;55H \e[19;58H \e[19;62H \e[19;65H \e[19;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[?25l"
+ - delay: 122
+ content: "\e[?25l\e[?25l\e[?25l\e[25;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\8721a960\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Set up CI/CD pipeline us\e[26;2H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\86cf6840\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e[44m\e[1m\e]8;;\e\\CI\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Enable gzip compression \e[31;32H\e(B\e[m\e[32m\e[1m\e]8;;\e\\3\e[?25l"
+ - delay: 13
+ content: "\e[?25l\e[2;50H\e(B\e[m\e[33m\e]8;;\e\\6cf684\e[2;57H531c0c755f0cb6e20\e[2;75He63ecf0f46\e[2;86H313\e[6;46H\e(B\e[m\e]8;;\e\\Enable\e[6;53Hgzip com\e[6;62Hression for\e[6;74Hfaster\e[6;81Hpage loads\e[8;43Hperformance/gzip_compression.go\e[8;75H|\e[8;77H1\e[8;79H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;55H\e(B\e[m\e[1m\e]8;;\e\\performance/gzip_compression.go b/performance/gzip_compression.go\e[13;57H513fb44\e[15;48Hperformance/gzip_compression.go\e[17;43H\e(B\e[m\e[32m\e]8;;\e\\p\e[17;45Hckage performance\e[?25l"
+ - delay: 124
+ content: "\e[?25l\e[?25l"
+ - delay: 5
+ content: "\e[?25l\e[26;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\86cf6840\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Enable gzip compression \e[27;2H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\37764ffe\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e[44m\e[1m\e]8;;\e\\CI\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Refactor error messages \e[31;32H\e(B\e[m\e[32m\e[1m\e]8;;\e\\4\e[?25l"
+ - delay: 16
+ content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\37764ffe8\e[2;59H9\e[2;61H8534\e[2;66H85a3\e[2;71H10cc\e[2;76H2188212fa006b\e[6;46H\e(B\e[m\e]8;;\e\\Refactor error mes\e[6;65Hages\e[6;74Hbet\e[6;81Hclarity \e[8;43Her\e[8;46Hor/error_messages.go | 1 \e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[8;75H \e[8;77H \e[8;79H \e[11;55H\e(B\e[m\e[1m\e]8;;\e\\er\e[11;58Hor/error_messages.go b/error/erro\e[11;92H_messag\e[11;100Hs.go\e(B\e[m\e]8;;\e\\ \e[13;57H\e(B\e[m\e[1m\e]8;;\e\\c68838f\e[15;48Her\e[15;51Hor/error_messages.go\e(B\e[m\e]8;;\e\\ \e[17;51H\e(B\e[m\e[32m\e]8;;\e\\er\e[17;54Hor\e(B\e[m\e]8;;\e\\ \e[?25l"
+ - delay: 125
+ content: "\e[?25l\e[?25l"
+ - delay: 5
+ content: "\e[?25l\e[27;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\37764ffe\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e(B\e[m\e]8;;\e\\ Refactor error messages \e[28;2H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\00286e9e\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e[44m\e[1m\e]8;;\e\\CI\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Improve accessibility of\e[31;32H\e(B\e[m\e[32m\e[1m\e]8;;\e\\5\e[?25l"
+ - delay: 21
+ content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\00286e9\e[2;57Ha8d8cbe6f6db2fefa0be545\e[2;81Hcf454697\e[6;46H\e(B\e[m\e]8;;\e\\Improve accessibility of site navigation \e[8;43Hnavigation/site_navigation.go\e[8;73H|\e[8;75H1\e[8;77H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;55H\e(B\e[m\e[1m\e]8;;\e\\navigation/site_navigation.go b\e[11;87Hnavigation/site_navigation.go\e[13;57H644e7ed\e[15;48Hnavigation/site_navigation.go\e[17;51H\e(B\e[m\e[32m\e]8;;\e\\navigation\e[?25l"
+ - delay: 623
+ content: "\e[?25l\e[35;21H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing A \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Amend commit──────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to amend this commit with your staged files? \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[18;21H└───────────────────────────────────────────────────────────────────────────────┘\e[23;1H\e(B\e[m\e[30m\e]8;;\e\\┌─\e(B\e[m\e[32m\e]8;;\e\\Commits \e(B\e[m\e[30m\e]8;;\e\\- Reflog─────────────────────┐\e[24;1H│\e[24;40H▲\e[25;1H│\e[25;40H█\e[26;1H│\e[26;40H│\e[27;1H│\e[27;40H│\e[28;1H│\e[28;40H│\e[29;1H│\e[29;40H│\e[30;1H│\e[30;40H▼\e[31;1H└──────────────────────────────5 of 60─┘\e[?25l"
+ - delay: 1604
+ content: "\e[?25l\e[35;30H\e(B\e[m\e[36m\e[1m\e]8;;\e\\<enter>\e[?25l"
+ - delay: 6
+ content: "\e[?25l\e[16;21H\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e(B\e[m\e]8;;\e\\ \e[17;21H \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[32m\e]8;;\e\\+package navigation\e(B\e[m\e]8;;\e\\ \e[18;21H \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\\\ No newline at end of file \e[23;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Commits \e(B\e[m\e]8;;\e\\- Reflog\e(B\e[m\e[32m\e[1m\e]8;;\e\\─────────────────────┐\e[24;1H│\e[24;40H▲\e[25;1H│\e[25;40H█\e[26;1H│\e[26;40H│\e[27;1H│\e[27;40H│\e[28;1H│\e[28;40H│\e[29;1H│\e[29;40H│\e[30;1H│\e[30;40H▼\e[31;1H└──────────────────────────────5 of 60─┘\e[33;48H\e(B\e[m\e]8;;\e\\commit\e[33;55H--f\e[33;59Hxup=00286e9ea8d8cbe6f6db2fefa0be5452cf454697\e[?25l"
+ - delay: 9
+ content: "\e[?25l\e[?25l"
+ - delay: 39
+ content: "\e[?25l\e[33;42H\e(B\e[m\e]8;;\e\\merges 4a57e4d3b1e49056a\e[33;67H153b\e[33;73H50435859beb9889\e[33;89H \e[?25l"
+ - delay: 49
+ content: "\e[?25l\e[35;104H\e(B\e[m\e[33m\e]8;;\e\\Rebasing \e(B\e[m\e[33m\e[4m\e]8;;\e\\(Reset) \e[?25l"
+ - delay: 50
+ content: "\e[?25l\e[?25l"
+ - delay: 65
+ content: "\e[?25l\e[35;104H\e(B\e[m\e[36m\e[1m\e]8;;\e\\ \e[?25l"
+ - delay: 6
+ content: "\e[?25l\e[?25l\e[?25l\e[?25l"
+ - delay: 5
+ content: "\e[?25l\e[5;2H\e(B\e[m\e[31m\e]8;;\e\\??  docs/README.md \e[6;2H\e(B\e[m\e]8;;\e\\ \e[13;38H\e(B\e[m\e[30m\e]8;;\e\\1\e[?25l"
+ - delay: 7
+ content: "\e[?25l\e[15;21H\e(B\e[m\e[33m\e]8;;\e\\↑5↓5\e[16;2H\e(B\e[m\e[36m\e]8;;\e\\6\e[?25l\e[?25l\e[2;2H\e(B\e[m\e[33m\e]8;;\e\\↑5↓5\e(B\e[m\e]8;;\e\\ repo → \e(B\e[m\e[32m\e]8;;\e\\featur\e[2;21H/demo\e[24;2H\e(B\e[m\e[31m\e]8;;\e\\ﰖ\e[24;4H7ef3a9d7\e[24;40H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[25;2H\e(B\e[m\e[31m\e]8;;\e\\ﰖ\e[25;4H652eff19\e[25;40H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[26;2H\e(B\e[m\e[31m\e]8;;\e\\ﰖ\e[26;4Hfd17bb55\e[27;2Hﰖ\e[27;4Hb9d04669\e[28;2H\e(B\e[m\e[91;44m\e[1m\e]8;;\e\\ﰖ\e[28;4Hf4367161\e[30;40H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[31;32H───────\e[?25l\e[?25l\e[24;40H\e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[25;40H█\e[30;40H▼\e[31;32H5 of 60\e[?25l"
+ - delay: 11
+ content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\f4367161\e[2;58H39af77d7020a\e[2;71Hc783f30e0812e35ce9\e[8;75H\e(B\e[m\e]8;;\e\\5\e[8;78H\e(B\e[m\e[32m\e]8;;\e\\++++\e[9;59H\e(B\e[m\e]8;;\e\\5\e[9;70Hs(+)\e[13;57H\e(B\e[m\e[1m\e]8;;\e\\ba10353\e[16;52H\e(B\e[m\e[36m\e]8;;\e\\,5 @@\e[18;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[18;44H\e(B\e[m\e]8;;\e\\ \e[18;47H \e[18;55H \e[18;58H \e[18;62H \e[18;65H \e[?25l\e[?25l\e[18;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;42H\e(B\e[m\e[32m\e]8;;\e\\+func Navigate() {\e[19;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[20;46Hpanic(\"unimplemented\")\e[21;42H+}\e[22;42H\e(B\e[m\e]8;;\e\\\\\e[22;44HNo\e[22;47Hnewline\e[22;55Hat\e[22;58Hend\e[22;62Hof\e[22;65Hfile\e[?25l"
+ - delay: 1605
+ content: "\e[?25l\e[35;30H\e(B\e[m\e[36m\e[1m\e]8;;\e\\P \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Force push────────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Your branch has diverged from the remote branch. Press <esc> to cancel, or \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[18;21H│\e(B\e[m\e[1m\e]8;;\e\\<enter> to force push. \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[19;21H└───────────────────────────────────────────────────────────────────────────────┘\e[23;1H\e(B\e[m\e[30m\e]8;;\e\\┌─\e(B\e[m\e[32m\e]8;;\e\\Commits \e(B\e[m\e[30m\e]8;;\e\\- Reflog─────────────────────┐\e[24;1H│\e[24;40H▲\e[25;1H│\e[25;40H█\e[26;1H│\e[26;40H│\e[27;1H│\e[27;40H│\e[28;1H│\e[28;40H│\e[29;1H│\e[29;40H│\e[30;1H│\e[30;40H▼\e[31;1H└──────────────────────────────5 of 60─┘\e[?25l"
+ - delay: 1604
+ content: "\e[?25l\e[35;30H\e(B\e[m\e[36m\e[1m\e]8;;\e\\<enter>\e[?25l"
+ - delay: 5
+ content: "\e[?25l\e[16;23H\e(B\e[m\e[32m\e[1m\e]8;;\e\\──────────\e[17;22H\e(B\e[m\e[1m\e]8;;\e\\Pushing...\e(B\e[m\e]8;;\e\\ - \e[18;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\└───────────────────────────────────────────────────────────────────────────────┘\e[19;21H\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[32m\e]8;;\e\\+func Navigate() {\e(B\e[m\e]8;;\e\\ \e[?25l"
+ - delay: 12
+ content: "\e[?25l\e[?25l"
+ - delay: 36
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\\\\e[?25l"
+ - delay: 50
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\|\e[?25l"
+ - delay: 50
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\/\e[?25l"
+ - delay: 50
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\-\e[?25l"
+ - delay: 50
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\\\\e[?25l"
+ - delay: 51
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\|\e[?25l"
+ - delay: 49
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\/\e[?25l"
+ - delay: 52
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\-\e[?25l"
+ - delay: 49
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\\\\e[?25l"
+ - delay: 52
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\|\e[33;42H git push --forc\e[33;60H-with-lease \e[?25l"
+ - delay: 47
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\/\e[?25l"
+ - delay: 50
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\-\e[?25l"
+ - delay: 66
+ content: "\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\\\\e[33;43H+ 5facfd2...7ef3a9d feature/demo\e[33;76H->\e[33;79Hfeature/demo\e[33;92H(forced\e[33;100Hupdate)\e[?25l"
+ - delay: 6
+ content: "\e[?25l\e[?25l\e[?25l\e[?25l"
+ - delay: 17
+ content: "\e[?25l\e[15;21H\e(B\e[m\e[32m\e]8;;\e\\✓\e(B\e[m\e]8;;\e\\ \e[16;2H\e(B\e[m\e[36m\e]8;;\e\\10s\e[24;40H\e(B\e[m\e[30m\e]8;;\e\\│\e[25;40H│\e[30;40H│\e[31;32H───────\e[?25l\e[?25l\e[2;2H\e(B\e[m\e[32m\e]8;;\e\\✓\e(B\e[m\e]8;;\e\\ repo → \e(B\e[m\e[32m\e]8;;\e\\feature/d\e[2;21Hmo\e(B\e[m\e]8;;\e\\ \e[17;33H|\e[24;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[24;4H7ef3a9d7\e[24;40H\e(B\e[m\e[30m\e]8;;\e\\▲\e[25;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[25;4H652eff19\e[25;40H\e(B\e[m\e[30m\e]8;;\e\\█\e[26;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[26;4Hfd17bb55\e[27;2Hﰖ\e[27;4Hb9d04669\e[28;2H\e(B\e[m\e[93;44m\e[1m\e]8;;\e\\ﰖ\e[28;4Hf4367161\e[30;40H\e(B\e[m\e[30m\e]8;;\e\\▼\e[31;32H5 of 60\e[?25l"
+ - delay: 7
+ content: "\e[?25l\e[16;21H\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1,5 @@\e(B\e[m\e]8;;\e\\ \e[17;21H \e[17;33H \e[17;40H\e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[32m\e]8;;\e\\+package navigation\e[17;101H\e(B\e[m\e]8;;\e\\ \e[18;21H \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[23;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Commits \e(B\e[m\e]8;;\e\\- Reflog\e(B\e[m\e[32m\e[1m\e]8;;\e\\─────────────────────┐\e[24;1H│\e[24;40H▲\e[25;1H│\e[25;40H█\e[26;1H│\e[26;40H│\e[27;1H│\e[27;40H│\e[28;1H│\e[28;40H│\e[29;1H│\e[29;40H│\e[30;1H│\e[30;40H▼\e[31;1H└──────────────────────────────5 of 60─┘\e[?25l"
+ - delay: 17
+ content: "\e[?25l\e[?25l"
+ - delay: 603
+ content: "\e[?25l\e[35;21H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[35;7H \e[35;10H \e[35;14H \e[?25l"
+ - delay: 2000
+ content: "\e[?12l\e[?25h\e[39;49m\e(B\e[m\e[H\e[2J\e[?1049l\e[23;0;0t\e[?1l\e>\e[?1000l\e[?1002l\e[?1003l\e[?1006l\e[?2004l\e[?1004l"
diff --git a/demo/bisect-compressed.gif b/demo/bisect-compressed.gif
new file mode 100644
index 000000000..482b2819b
--- /dev/null
+++ b/demo/bisect-compressed.gif
Binary files differ
diff --git a/demo/bisect.gif b/demo/bisect.gif
new file mode 100644
index 000000000..3158ba186
--- /dev/null
+++ b/demo/bisect.gif
Binary files differ
diff --git a/demo/bisect.yml b/demo/bisect.yml
new file mode 100644
index 000000000..a7e49b536
--- /dev/null
+++ b/demo/bisect.yml
@@ -0,0 +1,243 @@
+# The configurations that used for the recording, feel free to edit them
+config:
+
+ # Specify a command to be executed
+ # like `/bin/bash -l`, `ls`, or any other commands
+ # the default is bash for Linux
+ # or powershell.exe for Windows
+ command: go run cmd/integration_test/main.go cli --slow pkg/integration/tests/demo/bisect.go
+
+ # Specify the current working directory path
+ # the default is the current working directory path
+ cwd: /Users/jesseduffieldduffield/repos/lazygit
+
+ # Export additional ENV variables
+ env:
+ recording: true
+
+ # Explicitly set the number of columns
+ # or use `auto` to take the current
+ # number of columns of your shell
+ cols: 120 # 100
+
+ # Explicitly set the number of rows
+ # or use `auto` to take the current
+ # number of rows of your shell
+ rows: 35 # 30
+
+ # Amount of times to repeat GIF
+ # If value is -1, play once
+ # If value is 0, loop indefinitely
+ # If value is a positive number, loop n times
+ repeat: 0
+
+ # Quality
+ # 1 - 100
+ # Higher quality seems to make no difference, but running it through
+ # gifsicle ends up with a much better compressed version.
+ quality: 100
+
+ # Delay between frames in ms
+ # If the value is `auto` use the actual recording delays
+ frameDelay: auto
+
+ # Maximum delay between frames in ms
+ # Ignored if the `frameDelay` isn't set to `auto`
+ # Set to `auto` to prevent limiting the max idle time
+ maxIdleTime: 2000
+
+ # The surrounding frame box
+ # The `type` can be null, window, floating, or solid`
+ # To hide the title use the value null
+ # Don't forget to add a backgroundColor style with a null as type
+ frameBox:
+ type: floating
+ title: Lazygit
+ style:
+ border: 0px black solid
+ backgroundColor: "#1d1d1d"
+ margin: -5px
+
+ # Add a watermark image to the rendered gif
+ # You need to specify an absolute path for
+ # the image on your machine or a URL, and you can also
+ # add your own CSS styles
+ watermark:
+ imagePath: null
+ style:
+ position: absolute
+ right: 15px
+ bottom: 15px
+ width: 100px
+ opacity: 0.9
+
+ # Cursor style can be one of
+ # `block`, `underline`, or `bar`
+ cursorStyle: block
+
+ # Font family
+ # You can use any font that is installed on your machine
+ # in CSS-like syntax
+ fontFamily: "DejaVuSansMono Nerd Font"
+
+ # The size of the font
+ fontSize: 8
+
+ # The height of lines
+ lineHeight: 1
+
+ # The spacing between letters
+ letterSpacing: 0
+
+ # Theme
+ theme:
+ background: "transparent"
+ foreground: "#dddad6"
+ cursor: "#c7c7c7"
+ black: "#7a7a7a"
+ red: "#fc4384"
+ green: "#b3e33b"
+ yellow: "#ffa727"
+ blue: "#102895"
+ magenta: "#c930c7"
+ cyan: "#00c5c7"
+ white: "#c7c7c7"
+ brightBlack: "#676767"
+ brightRed: "#ff7fac"
+ brightGreen: "#c8ed71"
+ brightYellow: "#ebdf86"
+ brightBlue: "#6871ff"
+ brightMagenta: "#ff76ff"
+ brightCyan: "#5ffdff"
+ brightWhite: "#fffefe"
+
+# Records, feel free to edit them
+records:
+ - delay: 8724
+ content: "\e[?1000l\e[?1002l\e[?1003l\e[?1006l\e[?2004l\e[?1049h\e[22;0;0t\e[?1h\e=\e[?25l\e[H\e[2J"
+ - delay: 10
+ content: "\e[?1000l\e[?1002l\e[?1003l\e[?1006l\e[?1000h\e[?1002h\e[?1003h\e[?1006h\e[?1004h"
+ - delay: 94
+ content: "\e[?25l\e[1;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Commits \e(B\e[m\e]8;;\e\\- Reflog\e(B\e[m\e[32m\e[1m\e]8;;\e\\─────────────────────────────────────────────────────────────────────────────────────────────────────┐\e[2;1H│\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\a5cc9c45\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[94;44m\e[1m\e]8;;\e\\9:55PM\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e[44m\e[1m\e]8;;\e\\CI \e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[97;44m\e[1m\e]8;;\e\\◯\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[95;44m\e[1m\e]8;;\e\\(HEAD -> feature/demo, origin/master, origin/feature/demo, master)\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Add a user-fr\e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[3;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\41e20bf9\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[34m\e]8;;\e\\9:55PM\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI \e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\◯\e(B\e[m\e]8;;\e\\ Set up CI/CD pipeline using GitHub actions \e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[4;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\e1c8e57d\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[34m\e]8;;\e\\9:55PM\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI \e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\◯\e(B\e[m\e]8;;\e\\ Enable gzip compression for faster page loads \e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[5;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\72e34e08\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[34m\e]8;;\e\\9:55PM\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI \e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\◯\e(B\e[m\e]8;;\e\\ Refactor error messages for better clarity \e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[6;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\d1993a44\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[34m\e]8;;\e\\9:55PM\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI \e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\◯\e(B\e[m\e]8;;\e\\ Improve accessibility of site navigation \e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[7;1H│\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\cf82ae63\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[34m\e]8;;\e\\9:55PM\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI \e(B\e[m\e]8;;\e\\ \e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\◯\e(B\e[m\e]8;;\e\\ Add loading indicators to improve UX