diff --git a/demo/custom_command-compressed.gif b/demo/custom_command-compressed.gif new file mode 100644 index 000000000..9b0fe41d5 Binary files /dev/null and b/demo/custom_command-compressed.gif differ diff --git a/demo/custom_command.gif b/demo/custom_command.gif new file mode 100644 index 000000000..d7a95edaa Binary files /dev/null and b/demo/custom_command.gif differ diff --git a/demo/custom_command.yml b/demo/custom_command.yml new file mode 100644 index 000000000..4cfef3de8 --- /dev/null +++ b/demo/custom_command.yml @@ -0,0 +1,161 @@ +# 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/custom_command.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: 5419 + 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: 88 + 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]8;;\e\\ repo → \e(B\e[m\e[33m\e]8;;\e\\bugfix/fix-crash-bug\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[33m\e]8;;\e\\שׂ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\bugfix/fix-crash-bug\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\\0s\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\שׂ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\bugfix/fix-login-issue\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[17;1H│\e(B\e[m\e[36m\e]8;;\e\\0s\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/mobile-responsive\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[36m\e]8;;\e\\0s\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/search-functionality\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[36m\e]8;;\e\\0s\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/payment-processing\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[36m\e]8;;\e\\0s\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/user-authentication\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[36m\e]8;;\e\\0s\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[22;1H└───────────────────────────────1 of 7─┘│\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\\04be8ec7\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 Dockerfile for m\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\\a4efad28\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\\ Implement user blocking \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\\6c2cac4f\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 user notificati\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\\0d15591f\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\\ Upgrade Rails version to\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\\4a2a1937\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\\ Move global variables to\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\\984e5618\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\\ Fix typos in documentati\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\\60326b21\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\\ Optimize Lazygit startup\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 30─┘└──────────────────────────────────────────────────────────────────────────────┘\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\\/: Scroll, : 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\\??  custom_commands_example.yml \e[13;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\1 of 1\e[?25l" + - delay: 8 + content: "\e[?25l\e[2;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/custom_commands_example.yml b/custom_commands_example.yml\e[2;120H\e(B\e[m\e[30m\e]8;;\e\\▲\e[3;42H\e(B\e[m\e[1m\e]8;;\e\\new file mode 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\\index 0000000..758d20d\e[4;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[5;42H\e(B\e[m\e[1m\e]8;;\e\\--- /dev/null\e[5;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[6;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/custom_commands_example.yml\e[6;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[7;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1,11 @@\e[7;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[8;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[8;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[9;42H\e(B\e[m\e[32m\e]8;;\e\\+customCommands:\e[9;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[10;42H\e(B\e[m\e[32m\e]8;;\e\\+ - key: 'a'\e[10;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[11;42H\e(B\e[m\e[32m\e]8;;\e\\+ command: 'git checkout {{.Form.Branch}}'\e[11;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[12;42H\e(B\e[m\e[32m\e]8;;\e\\+ context: 'localBranches'\e[12;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[13;42H\e(B\e[m\e[32m\e]8;;\e\\+ prompts:\e[13;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[14;42H\e(B\e[m\e[32m\e]8;;\e\\+ - type: 'input'\e[14;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[15;42H\e(B\e[m\e[32m\e]8;;\e\\+ title: 'Enter a branch name to checkout:'\e[15;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[16;42H\e(B\e[m\e[32m\e]8;;\e\\+ key: 'Branch'\e[16;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[17;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[17;54Hsuggestions:\e[17;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[18;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[18;58Hpreset: 'branches'\e[18;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[19;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\\Invoke\e[35;8Ha\e[35;10Hcustom\e[35;17Hcommand\e[?25l" + - delay: 1503 + content: "\e[?25l\e[35;25H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing 3 \e[?25l" + - delay: 5 + content: "\e[?25l\e[1;43H\e(B\e[m\e[30m\e]8;;\e\\Log─────────────\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[31m\e]8;;\e\\??  custom_commands_example.yml \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 1─┘\e[14;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Local branches \e(B\e[m\e]8;;\e\\- Remotes - Tags\e(B\e[m\e[32m\e[1m\e]8;;\e\\──────┐\e[15;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[93;44m\e[1m\e]8;;\e\\שׂ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\bugfix/fix-crash-bug\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[16;1H│\e[16;40H│\e[17;1H│\e[17;40H│\e[18;1H│\e[18;40H│\e[19;1H│\e[19;40H│\e[20;1H│\e[20;40H│\e[21;1H│\e[21;40H│\e[22;1H└───────────────────────────────1 of 7─┘\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;42H\e(B\e[m\e]8;;\e\\* \e(B\e[m\e[33m\e]8;;\e\\commit 04be8ec (\e(B\e[m\e[36m\e[1m\e]8;;\e\\HEAD -> \e(B\e[m\e[32m\e[1m\e]8;;\e\\bugfix/fix-crash-bug\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(B\e[m\e[32m\e[1m\e]8;;\e\\feature/user- \e[3;42Hauthentication\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/search-functionality\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/payment-processing\e(B\e[m\e[33m\e]8;;\e\\, \e[4;42H\e(B\e[m\e[32m\e[1m\e]8;;\e\\bugfix/fix-login-issue\e(B\e[m\e[33m\e]8;;\e\\)\e[5;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Author: CI \e[5;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[6;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Date: 2 seconds ago \e[6;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[7;42H\e(B\e[m\e[31m\e]8;;\e\\|\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[31m\e]8;;\e\\|\e[8;48H\e(B\e[m\e]8;;\e\\Improve\e[8;56HDockerfile\e[8;67Hfor\e[8;71Hmore\e[8;76Hefficient\e[8;86Hbuilds\e[8;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[9;42H\e(B\e[m\e[31m\e]8;;\e\\|\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(B\e[m\e[33m\e]8;;\e\\commit a4efad2\e[10;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[11;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Author: CI \e[11;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[12;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Date: 3 seconds ago \e[12;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[13;42H\e(B\e[m\e[31m\e]8;;\e\\|\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[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Implement user\e[14;63Hblocking\e[14;72Hfunctionality\e[14;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[15;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ \e[15;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[16;42H\e(B\e[m\e]8;;\e\\* \e(B\e[m\e[33m\e]8;;\e\\commit 6c2cac4\e(B\e[m\e]8;;\e\\ \e[16;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[17;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[17;44H\e(B\e[m\e]8;;\e\\Author:\e[17;52HCI \e[17;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[18;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[18;44H\e(B\e[m\e]8;;\e\\Date:\e[18;52H3\e[18;54Hseconds ago \e[18;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[19;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[20;48H\e(B\e[m\e]8;;\e\\Refactor\e[20;57Huser\e[20;62Hnotifications\e[20;76Hsystem\e[21;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[22;42H\e(B\e[m\e]8;;\e\\*\e[22;44H\e(B\e[m\e[33m\e]8;;\e\\commit 0d15591\e[23;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[23;44H\e(B\e[m\e]8;;\e\\Author:\e[23;52HCI\e[23;55H\e[24;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[24;44H\e(B\e[m\e]8;;\e\\Date:\e[24;52H3\e[24;54Hseconds\e[24;62Hago\e[25;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[26;42H|\e[26;48H\e(B\e[m\e]8;;\e\\Upgrade\e[26;56HRails\e[26;62Hversion\e[26;70Hto\e[26;73H6.1.4\e[27;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[28;42H\e(B\e[m\e]8;;\e\\*\e[28;44H\e(B\e[m\e[33m\e]8;;\e\\commit 4a2a193\e[29;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[29;44H\e(B\e[m\e]8;;\e\\Author:\e[29;52HCI\e[29;55H\e[30;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[30;44H\e(B\e[m\e]8;;\e\\Date:\e[30;52H3\e[30;54Hseconds\e[30;62Hago\e[?25l\e[?25l\e[?25l" + - delay: 1104 + content: "\e[?25l\e[35;34H\e(B\e[m\e[36m\e[1m\e]8;;\e\\a\e[?25l\e[?25l\e[11;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Enter a branch name to checkout───────────────────────────────────────────────┐\e[12;21H│\e[12;40H\e(B\e[m\e]8;;\e\\ \e[12;44H \e[12;52H \e[12;54H \e[12;62H \e[12;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[13;21H└───────────────────────────────────────────────────────────────────────────────┘\e[14;1H\e(B\e[m\e[30m\e]8;;\e\\┌─\e(B\e[m\e[32m\e]8;;\e\\Local branches \e(B\e[m\e[30m\e]8;;\e\\- R┌─Suggestions (press to focus)────────────────────────────────────────────┐\e[15;1H│\e[15;21H│\e(B\e[m\e[33m\e]8;;\e\\bugfix/fix-crash-bug\e(B\e[m\e]8;;\e\\ \e[15;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[16;1H│\e[16;21H│\e(B\e[m\e[33m\e]8;;\e\\bugfix/fix-login-issue\e(B\e[m\e]8;;\e\\ \e[16;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[17;1H│\e[17;21H│\e(B\e[m\e[32m\e]8;;\e\\feature/mobile-responsive\e(B\e[m\e]8;;\e\\ \e[17;52H \e[17;55H \e[17;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[18;1H│\e[18;21H│\e(B\e[m\e[32m\e]8;;\e\\feature/search-functionality\e[18;52H\e(B\e[m\e]8;;\e\\ \e[18;54H \e[18;62H \e[18;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;1H│\e[19;21H│\e(B\e[m\e[32m\e]8;;\e\\featur\e[19;29H/payment-processing\e[19;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;1H│\e[20;21H│\e(B\e[m\e[32m\e]8;;\e\\feature/user-authentication\e(B\e[m\e]8;;\e\\ \e[20;57H \e[20;62H \e[20;76H \e[20;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[21;1H│\e[21;21H│\e(B\e[m\e]8;;\e\\master\e[21;40H \e[21;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[22;1H└───────────────────│\e(B\e[m\e]8;;\e\\ \e[22;44H \e[22;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[23;21H│\e(B\e[m\e]8;;\e\\ \e[23;44H \e[23;52H \e[23;55H \e[23;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[24;21H│\e(B\e[m\e]8;;\e\\ \e[24;24H \e[24;35H \e[24;39H \e[24;44H \e[24;52H \e[24;54H \e[24;62H \e[24;101H\e(B\e[m\e[30m\e]8;;\e\\│\e[25;21H└────────────────────────────────────────────────────────────────────────1 of 7─┘\e[12;22H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;22H\e[?12l\e[?25h\e[0 q" + - delay: 1103 + content: "\e[?25l\e[35;25H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[12;22H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;22H\e(B\e[m\e]8;;\e\\m\e[15;22Hmaster \e[16;22H\e(B\e[m\e[32m\e]8;;\e\\feature/mobile-responsive\e[17;30Hpayment-proce\e[17;44Hsing \e[18;22H\e(B\e[m\e]8;;\e\\ \e[19;22H \e[20;22H \e[21;22H \e[25;99H\e(B\e[m\e[30m\e]8;;\e\\3\e[12;23H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;23H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[12;23H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;23H\e(B\e[m\e]8;;\e\\o\e[15;22H\e(B\e[m\e[32m\e]8;;\e\\feature/mobile-responsive\e[16;30Hpayment-proce\e[16;44Hsing \e[17;22H\e(B\e[m\e]8;;\e\\ \e[25;99H\e(B\e[m\e[30m\e]8;;\e\\2\e[12;24H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;24H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[12;24H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;24H\e(B\e[m\e]8;;\e\\b\e[15;47H\e(B\e[m\e[32m\e]8;;\e\\ \e[16;22H\e(B\e[m\e]8;;\e\\ \e[25;99H\e(B\e[m\e[30m\e]8;;\e\\1\e[12;25H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;25H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[12;25H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;25H\e(B\e[m\e]8;;\e\\i\e[12;26H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;26H\e[?12l\e[?25h\e[0 q" + - delay: 121 + content: "\e[?25l\e[12;26H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;26H\e(B\e[m\e]8;;\e\\l\e[12;27H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;27H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[12;27H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;27H\e(B\e[m\e]8;;\e\\e\e[12;28H\e[?12l\e[?25h\e[0 q\e[?25l\e[12;28H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[35;25H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[12;28H\e[?12l\e[?25h\e[0 q\e[?25l\e[11;21H\e(B\e[m\e[30m\e]8;;\e\\┌─Enter a branch name to checkout───────────────────────────────────────────────┐\e[12;21H│\e[12;101H│\e[13;21H└───────────────────────────────────────────────────────────────────────────────┘\e[14;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Suggestions (press to focus)────────────────────────────────────────────┐\e[15;2H\e(B\e[m\e[32m\e]8;;\e\\ *\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\שׂ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\bugfix/fix-cr\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\feature/mobile-responsive \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[16;21H│\e[16;101H│\e[17;21H│\e[17;101H│\e[18;21H│\e[18;101H│\e[19;21H│\e[19;101H│\e[20;21H│\e[20;101H│\e[21;21H│\e[21;101H│\e[22;21H│\e[22;101H│\e[23;21H│\e[23;101H│\e[24;21H│\e[24;101H│\e[25;21H└────────────────────────────────────────────────────────────────────────1 of 1─┘\e[?25l" + - delay: 602 + content: "\e[?25l\e[35;35H\e(B\e[m\e[36m\e[1m\e]8;;\e\\enter>\e[?25l" + - delay: 5 + content: "\e[?25l\e[11;21H\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Author: CI \e[12;21H \e[12;40H\e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[31m\e]8;;\e\\|\e[12;44H\e(B\e[m\e]8;;\e\\Date:\e[12;52H3\e[12;54Hseconds\e[12;62Hago\e[12;101H \e[13;21H\e(B\e[m\e[30m\e]8;;\e\\─\e[13;33H1 of 1\e[13;40H┘│\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ \e[14;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Local branches \e(B\e[m\e]8;;\e\\- Remotes - Tags\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[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Implement user blocking functionality \e[15;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\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[93;44m\e[1m\e]8;;\e\\שׂ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\bugfix/fix-crash-bug\e(B\e[m\e[44m\e[1m\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[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ \e[16;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[16;21H\e(B\e[m\e[33m\e]8;;\e\\gin-issue\e[16;40H\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[16;44H\e(B\e[m\e[33m\e]8;;\e\\commit 6c2cac4\e[16;101H\e(B\e[m\e]8;;\e\\ \e[17;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[17;21H\e(B\e[m\e[32m\e]8;;\e\\e-responsive\e[17;40H\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[31m\e]8;;\e\\|\e[17;44H\e(B\e[m\e]8;;\e\\Author:\e[17;52HCI\e[17;55H\e[17;101H \e[18;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[18;21H\e(B\e[m\e[32m\e]8;;\e\\h-functionality\e[18;40H\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[31m\e]8;;\e\\|\e[18;44H\e(B\e[m\e]8;;\e\\Date:\e[18;52H3\e[18;54Hseconds\e[18;62Hago\e[18;101H \e[19;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[19;21H\e(B\e[m\e[32m\e]8;;\e\\nt-processing\e[19;40H\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[31m\e]8;;\e\\|\e[19;101H\e(B\e[m\e]8;;\e\\ \e[20;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[20;21H\e(B\e[m\e[32m\e]8;;\e\\authentication\e[20;40H\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[31m\e]8;;\e\\|\e[20;48H\e(B\e[m\e]8;;\e\\Refactor\e[20;57Huser\e[20;62Hnotifications\e[20;76Hsystem\e[20;101H \e[21;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[21;21H\e(B\e[m\e]8;;\e\\ \e[21;40H\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[31m\e]8;;\e\\|\e[21;101H\e(B\e[m\e]8;;\e\\ \e[22;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\└───────────────────────────────1 of 7─┘\e(B\e[m\e[30m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\*\e[22;44H\e(B\e[m\e[33m\e]8;;\e\\commit 0d15591\e[22;101H\e(B\e[m\e]8;;\e\\ \e[23;21H\e(B\e[m\e[30m\e]8;;\e\\───────────────────┐│\e(B\e[m\e[31m\e]8;;\e\\|\e[23;44H\e(B\e[m\e]8;;\e\\Author:\e[23;52HCI\e[23;55H\e[23;101H \e[24;21Hve\e[24;24HDockerfile\e[24;35Hfor\e[24;39Hm\e(B\e[m\e[30m\e]8;;\e\\▲│\e(B\e[m\e[31m\e]8;;\e\\|\e[24;44H\e(B\e[m\e]8;;\e\\Date:\e[24;52H3\e[24;54Hseconds\e[24;62Hago\e[24;101H \e[25;21Hment user blocking \e(B\e[m\e[30m\e]8;;\e\\█│\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ \e[33;44Hbash\e[33;49H-c\e[33;52H\"git\e[33;57Hcheckout\e[33;66Hfeature/mobile-responsive\"\e[?25l" + - delay: 10 + content: "\e[?25l\e[6;52H\e(B\e[m\e]8;;\e\\5\e[12;52H6\e[18;52H6\e[24;52H6\e[30;52H6\e[?25l\e[?25l\e[?25l" + - delay: 23 + content: "\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 5 + content: "\e[?25l\e[15;6H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\שׂ\e[15;8Hfeature/mobile-responsive\e[16;2H\e(B\e[m\e[36m\e]8;;\e\\5\e[16;19H\e(B\e[m\e[33m\e]8;;\e\\crash\e[16;25Hbug\e(B\e[m\e]8;;\e\\ \e[17;2H\e(B\e[m\e[36m\e]8;;\e\\5\e[17;6H\e(B\e[m\e[33m\e]8;;\e\\שׂ\e[17;8Hbugfix/fix-login-issue\e(B\e[m\e]8;;\e\\ \e[18;2H\e(B\e[m\e[36m\e]8;;\e\\5\e[19;2H5\e[20;2H5\e[21;2H5\e[?25l\e[?25l\e[2;10H\e(B\e[m\e[32m\e]8;;\e\\feature/mobile-responsive\e[24;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[24;4Hffe5f9ec\e[24;16H\e(B\e[m\e]8;;\e\\Make mobile response \e[24;39H \e[25;4H\e(B\e[m\e[32m\e]8;;\e\\0\e[25;6Hbe8ec7\e[25;19H\e(B\e[m\e]8;;\e\\rov\e[25;23H Dock\e[25;30Hfi\e[25;33He for m\e[26;4H\e(B\e[m\e[32m\e]8;;\e\\a4ef\e[26;9Hd28\e[26;16H\e(B\e[m\e]8;;\e\\Implement user blocking \e[27;4H\e(B\e[m\e[32m\e]8;;\e\\6c2cac4\e[27;16H\e(B\e[m\e]8;;\e\\Refactor user\e[27;30Hnotifica\e[27;39Hi\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\0d155\e[28;10H1f\e[28;16H\e(B\e[m\e]8;;\e\\Upgrade R\e[28;26Hils version\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\4a2a1937\e[29;16H\e(B\e[m\e]8;;\e\\Move gl\e[29;24Hbal variables \e[29;39Ho\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\984e5618\e[30;16H\e(B\e[m\e]8;;\e\\Fix typos in documentati\e[31;38H\e(B\e[m\e[30m\e]8;;\e\\1\e[?25l\e[?25l\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;51H\e(B\e[m\e[33m\e]8;;\e\\ffe5f9e\e[2;68H\e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/mobile-responsive\e(B\e[m\e[33m\e]8;;\e\\)\e(B\e[m\e]8;;\e\\ \e[3;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Author: CI \e[4;42H\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Date: 5 seconds ago\e[5;44H \e[5;52H \e[5;55H \e[6;44H Make mobile resp\e[6;65Hnse\e[8;42H*\e[8;44H\e(B\e[m\e[33m\e]8;;\e\\commit 04be8ec (\e(B\e[m\e[32m\e[1m\e]8;;\e\\master\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/user-authentication\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/search- \e[9;42Hfunctionality\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/payment-processing\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\bugfix/fix-login-issue\e(B\e[m\e[33m\e]8;;\e\\, \e(B\e[m\e[32m\e[1m\e]8;;\e\\bugfix/fix-\e[10;42Hcrash-bug\e(B\e[m\e[33m\e]8;;\e\\)\e(B\e[m\e]8;;\e\\ \e[12;52H5\e[14;51Hrov\e[14;55H Dock\e[14;62Hfi\e[14;65He for more efficient\e[14;86Hbuilds\e[16;51H\e(B\e[m\e[33m\e]8;;\e\\a4ef\e[16;56Hd2\e[20;48H\e(B\e[m\e]8;;\e\\Implement user blocking functionality\e[22;51H\e(B\e[m\e[33m\e]8;;\e\\6c2cac4\e[26;48H\e(B\e[m\e]8;;\e\\Refactor user\e[26;62Hnotifica\e[26;71Hions system\e[28;51H\e(B\e[m\e[33m\e]8;;\e\\0d155\e[28;57H1\e[?25l\e[?25l\e[?25l" + - delay: 36 + content: "\e[?25l\e[?25l" + - delay: 603 + content: "\e[?25l\e[35;25H\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;8H \e[35;10H \e[35;17H \e[?25l" + - delay: 2001 + 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/custom_patch-compressed.gif b/demo/custom_patch-compressed.gif new file mode 100644 index 000000000..0aadfe7a0 Binary files /dev/null and b/demo/custom_patch-compressed.gif differ diff --git a/demo/custom_patch.gif b/demo/custom_patch.gif new file mode 100644 index 000000000..1540066d1 Binary files /dev/null and b/demo/custom_patch.gif differ diff --git a/demo/custom_patch.yml b/demo/custom_patch.yml new file mode 100644 index 000000000..e80bbf3ae --- /dev/null +++ b/demo/custom_patch.yml @@ -0,0 +1,191 @@ +# 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/custom_patch.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: 3640 + 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: 69 + 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]8;;\e\\ repo → \e(B\e[m\e[32m\e]8;;\e\\feature/user-authentication\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/user-authentication\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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\60249643\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\\ Enhance user authenticat\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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\2b85318c\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\\ Stop using shims \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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\63843bd1\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\\ Fix local session storag\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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\e88e6289\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 user authentication \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\\def5dfdb\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 Dockerfile for m\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\\00cad740\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\\ Implement user blocking \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\\f753046f\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 user notificati\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 34─┘└──────────────────────────────────────────────────────────────────────────────┘\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\\/: Scroll, : Cancel, q: Quit, ?: Keybindings, 1-5: Jump to panel, H/L: Scroll left/right \e[?25l\e[?25l\e[13;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\0 of 0\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\\Remove\e[35;8Ha\e[35;10Hline\e[35;15Hfrom\e[35;20Han\e[35;23Hold\e[35;27Hcommit\e[?25l" + - delay: 1004 + content: "\e[?25l\e[35;34H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing 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[5;40H│\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└───────────────────────────────0 of 0─┘\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[93;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\60249643\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\\ Enhance user authenticat\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 34─┘\e[?25l" + - delay: 11 + content: "\e[?25l\e[2;42H\e(B\e[m\e[33m\e]8;;\e\\commit 60249643e0c35d45116e41f2b5533a072e5f43c6 (\e(B\e[m\e[36m\e[1m\e]8;;\e\\HEAD -> \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/user- \e(B\e[m\e[30m\e]8;;\e\\▲\e[3;42H\e(B\e[m\e[32m\e[1m\e]8;;\e\\authentication\e(B\e[m\e[33m\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\\Author:\e[4;50HCI\e[4;53H\e[4;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[5;42H\e(B\e[m\e]8;;\e\\Date:\e[5;50HFri\e[5;54HAug\e[5;58H4\e[5;60H09:11:17\e[5;69H2023\e[5;74H+1000\e[5;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[6;120H█\e[7;46H\e(B\e[m\e]8;;\e\\Enhance\e[7;54Huser\e[7;59Hauthentication\e[7;74Hfeature\e[7;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[8;42H\e(B\e[m\e]8;;\e\\---\e[8;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[9;43H\e(B\e[m\e]8;;\e\\src/authentication.go\e[9;65H|\e[9;67H1\e[9;69H\e(B\e[m\e[32m\e]8;;\e\\+\e[9;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[10;43H\e(B\e[m\e]8;;\e\\src/session.go\e[10;65H|\e[10;67H1\e[10;69H\e(B\e[m\e[32m\e]8;;\e\\+\e[10;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[11;43H\e(B\e[m\e]8;;\e\\2\e[11;45Hfiles\e[11;51Hchanged,\e[11;60H2\e[11;62Hinsertions(+)\e[11;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[12;120H█\e[13;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/authentication.go b/src/authentication.go\e[13;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[14;42H\e(B\e[m\e[1m\e]8;;\e\\new file mode 100644\e[14;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[15;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..fef5a5e\e[15;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[16;42H\e(B\e[m\e[1m\e]8;;\e\\--- /dev/null\e[17;42H+++ b/src/authentication.go\e[18;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e[19;42H\e(B\e[m\e[32m\e]8;;\e\\+package authentication\e[20;42H\e(B\e[m\e]8;;\e\\\\\e[20;44HNo\e[20;47Hnewline\e[20;55Hat\e[20;58Hend\e[20;62Hof\e[20;65Hfile\e[21;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/session.go b/src/session.go\e[22;42Hnew file mode 100644\e[23;42Hindex 0000000..e71c79f\e[24;42H--- /dev/null\e[25;42H+++ b/src/session.go\e[26;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e[27;42H\e(B\e[m\e[32m\e]8;;\e\\+package session\e[28;42H\e(B\e[m\e]8;;\e\\\\\e[28;44HNo\e[28;47Hnewline\e[28;55Hat\e[28;58Hend\e[28;62Hof\e[28;65Hfile\e[30;120H\e(B\e[m\e[30m\e]8;;\e\\▼\e[?25l" + - delay: 603 + content: "\e[?25l\e[35;34H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[24;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\60249643\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\\ Enhance user authenticat\e[25;2H\e(B\e[m\e[93;44m\e[1m\e]8;;\e\\ﰖ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\2b85318c\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\\ Stop using shims \e[31;32H\e(B\e[m\e[32m\e[1m\e]8;;\e\\2\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\2b85318c42f803bb562\e[2;69H9f96a\e[2;75H7414\e[2;81H059d\e[2;86Hce1\e(B\e[m\e]8;;\e\\ \e[3;42HAuthor: CI \e[4;42HDa\e[4;45He: \e[4;50HFri Aug 4 09:11:17 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;46HStop\e[6;51Husing\e[6;57Hshims\e[7;42H---\e[7;46H \e[7;54H \e[7;59H \e[7;74H \e[8;42H src/users.go\e[8;56H|\e[8;58H7\e[8;60H\e(B\e[m\e[32m\e]8;;\e\\+++++++\e[9;43H\e(B\e[m\e]8;;\e\\1 file changed, 7 insertions(+)\e[10;43H \e[10;65H \e[10;67H \e[10;69H \e[11;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/users.go b/src/users.go\e[12;42Hindex 06ab7d0..843aa86 100644\e[13;42H--- a/src/users.go\e(B\e[m\e]8;;\e\\ \e[14;42H\e(B\e[m\e[1m\e]8;;\e\\+++\e[14;46Hb/src/us\e[14;55Hrs.go\e(B\e[m\e]8;;\e\\ \e[15;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -1 +1,8 @@\e(B\e[m\e]8;;\e\\ \e[16;42H package main\e[16;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[17;42H\e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[17;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[18;42H\e(B\e[m\e[32m\e]8;;\e\\+import \"fmt\"\e[19;43H\e(B\e[m\e]8;;\e\\ \e[20;42H\e(B\e[m\e[32m\e]8;;\e\\+func main() {\e(B\e[m\e]8;;\e\\ \e[20;58H \e[20;62H \e[20;65H \e[21;42H\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\\// TODO: verify that this actuall works\e(B\e[m\e]8;;\e\\ \e[22;42H\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\\fmt.Println(\"hello world\")\e[23;42H+}\e(B\e[m\e]8;;\e\\ \e[24;42H \e[25;42H \e[26;42H \e[27;42H \e[28;42H \e[28;44H \e[28;47H \e[28;55H \e[28;58H \e[28;62H \e[28;65H \e[?25l" + - delay: 1125 + content: "\e[?25l\e[35;34H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[?25l" + - delay: 14 + content: "\e[?25l\e[23;3H\e(B\e[m\e[32m\e[1m\e]8;;\e\\Diff files (2b85318 Stop using shims\e[24;2H\e(B\e[m\e[44m\e[1m\e]8;;\e\\▼  src \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[25;2H\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\M\e(B\e[m\e]8;;\e\\  users.go \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[26;2H\e(B\e[m\e]8;;\e\\ \e[26;4H \e[26;13H \e[26;16H \e[26;20H \e[26;26H \e[26;34H \e[27;2H \e[27;4H \e[27;13H \e[27;16H \e[27;20H \e[27;25H \e[28;2H \e[28;4H \e[28;13H \e[28;16H \e[28;24H \e[28;35H \e[28;39H \e[29;2H \e[29;4H \e[29;13H \e[29;16H \e[29;26H \e[29;31H \e[30;2H \e[30;4H \e[30;13H \e[30;16H \e[30;25H \e[30;30H \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[31;32H─1 of 2\e[?25l" + - delay: 8 + content: "\e[?25l\e[2;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/users.go b/src/users.go\e(B\e[m\e]8;;\e\\ \e[3;42H\e(B\e[m\e[1m\e]8;;\e\\index 06ab7d0..843aa86 100644\e[4;42H--- a/src/users.go\e(B\e[m\e]8;;\e\\ \e[4;69H \e[4;74H \e[5;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/src/users.go\e[6;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -1 +1,8 @@\e(B\e[m\e]8;;\e\\ \e[6;57H \e[7;42H package\e[7;51Hmain\e[8;42H\e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[8;56H \e[8;58H \e[8;60H \e[9;42H\e(B\e[m\e[32m\e]8;;\e\\+import \"fmt\"\e(B\e[m\e]8;;\e\\ \e[9;59H \e[9;61H \e[10;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;42H+func main() {\e(B\e[m\e]8;;\e\\ \e[12;42H\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\\// TODO: verify that this actuall works\e[13;42H+\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\fmt.Println(\"hello world\")\e[14;42H+}\e(B\e[m\e]8;;\e\\ \e[15;42H \e[16;43H \e[16;51H \e[17;42H \e[18;42H \e[18;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[19;42H\e(B\e[m\e]8;;\e\\ \e[19;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[20;42H\e(B\e[m\e]8;;\e\\ \e[20;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[21;42H\e(B\e[m\e]8;;\e\\ \e[21;46H \e[22;42H \e[22;46H \e[23;42H \e[?25l" + - delay: 602 + content: "\e[?25l\e[35;34H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[24;2H\e(B\e[m\e]8;;\e\\▼  src \e[25;2H\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\M\e(B\e[m\e[44m\e[1m\e]8;;\e\\  users.go \e[31;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\2\e[?25l" + - delay: 7 + content: "\e[?25l\e[?25l" + - delay: 1125 + content: "\e[?25l\e[35;34H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[?25l" + - delay: 22 + content: "\e[?25l\e[1;41H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Patch────────────────────────────────────────────────────────────────────────┐\e[2;41H│\e[2;120H▲\e[3;41H│\e[3;120H█\e[4;41H│\e[4;120H█\e[5;41H│\e[5;120H█\e[6;41H│\e[6;47H\e(B\e[m\e[36m\e]8;;\e\\,1 +1,8 @@\e[6;120H\e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[7;41H│\e[7;120H█\e[8;41H│\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\+\e(B\e[m\e[1m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[9;41H│\e[9;120H│\e[10;41H│\e[10;120H│\e[11;41H│\e[11;120H│\e[12;41H│\e[12;43H\e(B\e[m\e[32m\e]8;;\e\\ \e[12;120H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[13;41H│\e[13;43H\e(B\e[m\e[32m\e]8;;\e\\ \e[13;120H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[14;41H│\e[14;120H│\e[15;41H│\e[15;120H▼\e[16;41H└──────────────────────────────────────────────────────────────────────────────┘\e[17;41H\e(B\e[m\e[30m\e]8;;\e\\┌─Custom patch─────────────────────────────────────────────────────────────────┐\e[18;120H│\e[19;120H│\e[20;120H│\e[23;1H┌─Diff files (2b85318 Stop using shims─┐\e[24;1H│\e[24;40H│\e[25;1H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\M\e(B\e[m\e]8;;\e\\  users.go \e(B\e[m\e[30m\e]8;;\e\\│\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[30;120H│\e[31;1H└───────────────────────────────2 of 2─┘\e[35;98H\e(B\e[m\e[33m\e[1m\e]8;;\e\\Building patch \e(B\e[m\e[33m\e[1m\e[4m\e]8;;\e\\(Reset) \e[?25l" + - delay: 603 + content: "\e[?25l\e[35;34H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[8;42H\e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[9;42H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\+import \"fmt\"\e(B\e[m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l" + - delay: 124 + content: "\e[?25l\e[?25l\e[?25l\e[9;42H\e(B\e[m\e[32m\e]8;;\e\\+import \"fmt\"\e(B\e[m\e]8;;\e\\ \e[10;42H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\+\e(B\e[m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l" + - delay: 122 + content: "\e[?25l\e[?25l\e[?25l\e[10;42H\e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[11;42H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\+func main() {\e(B\e[m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l" + - delay: 125 + content: "\e[?25l\e[?25l\e[?25l\e[11;42H\e(B\e[m\e[32m\e]8;;\e\\+func main() {\e(B\e[m\e]8;;\e\\ \e[12;42H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\+ // TODO: verify that this actuall works\e(B\e[m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l" + - delay: 623 + content: "\e[?25l\e[35;34H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[?25l" + - delay: 13 + content: "\e[?25l\e[12;42H\e(B\e[m\e[92;42m\e[1m\e]8;;\e\\+\e[18;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/users.go b/src/users.go\e[18;120H\e(B\e[m\e[30m\e]8;;\e\\▲\e[19;42H\e(B\e[m\e[1m\e]8;;\e\\index 06ab7d0..843aa86 100644\e[19;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[20;42H\e(B\e[m\e[1m\e]8;;\e\\--- a/src/users.go\e[20;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[21;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/src/users.go\e[21;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[22;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -1,1 +1,2 @@\e[22;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[23;43H\e(B\e[m\e]8;;\e\\package\e[23;51Hmain\e[23;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[24;4H\e(B\e[m\e[33m\e]8;;\e\\ src\e[24;42H\e(B\e[m\e[32m\e]8;;\e\\+ // TODO: verify that this actuall works\e[24;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[25;6H\e(B\e[m\e[33m\e]8;;\e\\ users.go \e[25;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[30;120H▼\e[?25l" + - delay: 602 + content: "\e[?25l\e[35;44H\e(B\e[m\e[36m\e[1m\e]8;;\e\\esc> \e[?25l\e[?25l\e[1;41H\e(B\e[m\e[30m\e]8;;\e\\┌─Patch────────────────────────────────────────────────────────────────────────┐\e[2;41H│\e[2;120H▲\e[3;41H│\e[3;120H█\e[4;41H│\e[4;120H█\e[5;41H│\e[5;120H█\e[6;41H│\e[6;120H█\e[7;41H│\e[7;120H█\e[8;41H│\e[8;120H█\e[9;41H│\e[9;120H│\e[10;41H│\e[10;120H│\e[11;41H│\e[11;120H│\e[12;41H│\e(B\e[m\e[32;42m\e]8;;\e\\+\e(B\e[m\e[32;44m\e]8;;\e\\ // TODO: verify that this actuall works\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\│\e[13;41H│\e[13;120H│\e[14;41H│\e[14;120H│\e[15;41H│\e[15;120H▼\e[16;41H└──────────────────────────────────────────────────────────────────────────────┘\e[23;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Diff files (2b85318 Stop using shims─┐\e[24;1H│\e[24;40H│\e[25;1H│\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\M\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\ users.go \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\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└───────────────────────────────2 of 2─┘\e[?25l" + - delay: 8 + content: "\e[?25l\e[6;47H\e(B\e[m\e[36m\e]8;;\e\\ +1,8 @@\e(B\e[m\e]8;;\e\\ \e[12;42H\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\\// TODO: verify that this actuall works\e[13;43H\e(B\e[m\e]8;;\e\\ \e[?25l" + - delay: 603 + content: "\e[?25l\e[35;44H\e(B\e[m\e[36m\e[1m\e]8;;\e\\c-p\e[?25l\e[?25l\e[11;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Patch options─────────────────────────────────────────────────────────────────┐\e[12;21H│\e(B\e[m\e[96;44m\e[1m\e]8;;\e\\c\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Reset patch \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[13;21H│\e(B\e[m\e[36m\e]8;;\e\\a\e(B\e[m\e]8;;\e\\ Apply patch \e[13;46H \e[13;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[14;21H│\e(B\e[m\e[36m\e]8;;\e\\r\e(B\e[m\e]8;;\e\\ Apply patch in reverse\e[14;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[15;21H│\e(B\e[m\e[36m\e]8;;\e\\d\e(B\e[m\e]8;;\e\\ Remove patch\e[15;37Hfrom original\e[15;51Hcommit\e[15;58H(2b85318c42f803bb562e9f96a5741407059d4ce1)\e[15;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[16;21H│\e(B\e[m\e[36m\e]8;;\e\\i\e[16;24H\e(B\e[m\e]8;;\e\\Move\e[16;29Hpatch\e[16;35Hout\e[16;39Hinto index \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[17;21H│\e(B\e[m\e[36m\e]8;;\e\\n\e[17;24H\e(B\e[m\e]8;;\e\\Move\e[17;29Hpatch\e[17;35Hinto\e[17;40Hnew commit \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[18;21H│\e(B\e[m\e[36m\e]8;;\e\\y\e[18;24H\e(B\e[m\e]8;;\e\\Copy\e[18;29Hpatch\e[18;35Hto\e[18;38Hclipboard \e[18;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[19;21H│\e[19;24H\e(B\e[m\e]8;;\e\\Cancel\e[19;40H \e[19;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[20;21H└────────────────────────────────────────────────────────────────────────1 of 8─┘\e[23;1H\e(B\e[m\e[30m\e]8;;\e\\┌─Diff files (2b85318 Stop using shims─┐\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└───────────────────────────────2 of 2─┘\e[?25l" + - delay: 603 + content: "\e[?25l\e[35;34H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[12;22H\e(B\e[m\e[36m\e]8;;\e\\c\e(B\e[m\e]8;;\e\\ Reset patch \e[13;22H\e(B\e[m\e[96;44m\e[1m\e]8;;\e\\a\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Apply patch \e[20;94H\e(B\e[m\e[32m\e[1m\e]8;;\e\\2\e[?25l" + - delay: 122 + content: "\e[?25l\e[?25l\e[?25l\e[13;22H\e(B\e[m\e[36m\e]8;;\e\\a\e(B\e[m\e]8;;\e\\ Apply patch \e[14;22H\e(B\e[m\e[96;44m\e[1m\e]8;;\e\\r\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Apply patch in reverse \e[20;94H\e(B\e[m\e[32m\e[1m\e]8;;\e\\3\e[?25l" + - delay: 122 + content: "\e[?25l\e[?25l\e[?25l\e[14;22H\e(B\e[m\e[36m\e]8;;\e\\r\e(B\e[m\e]8;;\e\\ Apply patch in reverse \e[15;22H\e(B\e[m\e[96;44m\e[1m\e]8;;\e\\d\e(B\e[m\e[44m\e[1m\e]8;;\e\\ Remove patch from original commit (2b85318c42f803bb562e9f96a5741407059d4ce1) \e[20;94H\e(B\e[m\e[32m\e[1m\e]8;;\e\\4\e[?25l" + - delay: 625 + content: "\e[?25l\e[35;34H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[?25l" + - delay: 6 + content: "\e[?25l\e[11;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 main() {\e(B\e[m\e]8;;\e\\ \e[12;21H \e[12;24H \e[12;30H \e[12;40H\e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[32m\e]8;;\e\\+\e[12;46H// TODO: verify that this actuall works\e[12;101H\e(B\e[m\e]8;;\e\\ \e[13;21H\e(B\e[m\e[30m\e]8;;\e\\────────────0 of 0─┘│\e(B\e[m\e[32m\e]8;;\e\\+\e[13;46Hfmt.Println(\"hello world\")\e[13;101H\e(B\e[m\e]8;;\e\\ \e[14;21H\e(B\e[m\e[30m\e]8;;\e\\emotes - Tags──────┐│\e(B\e[m\e[32m\e]8;;\e\\+}\e(B\e[m\e]8;;\e\\ \e[14;101H \e[15;21H\e(B\e[m\e[32m\e]8;;\e\\authentication\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e]8;;\e\\ \e[16;21H \e[16;24H \e[16;29H \e[16;35H \e[16;39H \e(B\e[m\e[30m\e]8;;\e\\│└────────────────────────────────────────────────────────────\e[17;21H\e(B\e[m\e]8;;\e\\ \e[17;24H \e[17;29H \e[17;35H \e[17;40H\e(B\e[m\e[30m\e]8;;\e\\│┌─Custom patch───────────────────────────────────────────────\e[18;21H\e(B\e[m\e]8;;\e\\ \e[18;24H \e[18;29H \e[18;35H \e[18;38H \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/users.go b/src/users.go\e[18;101H\e(B\e[m\e]8;;\e\\ \e[19;21H \e[19;24H \e[19;40H\e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[1m\e]8;;\e\\index 06ab7d0..843aa86 100644\e[19;101H\e(B\e[m\e]8;;\e\\ \e[20;21H \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[1m\e]8;;\e\\--- a/src/users.go\e(B\e[m\e]8;;\e\\ \e[23;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Diff files (2b85318 Stop using shims─┐\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└───────────────────────────────2 of 2─┘\e[33;42H\e(B\e[m\e[33m\e]8;;\e\\Remove patch from commit \e[?25l" + - delay: 8 + content: "\e[?25l\e[33;42H\e(B\e[m\e]8;;\e\\merges 63843bd1ab65d83586295dc319f369ad9acb9873 \e[?25l" + - delay: 38 + content: "\e[?25l\e[?25l" + - delay: 52 + content: "\e[?25l\e[33;42H\e(B\e[m\e]8;;\e\\ git commit --\e[33;58Hmen\e[33;62H --no-edit --allow-empty \e[?25l" + - delay: 48 + content: "\e[?25l\e[33;48H\e(B\e[m\e]8;;\e\\rebase\e[33;57Hcontinue \e[33;73H \e[?25l" + - delay: 21 + content: "\e[?25l\e[35;98H\e(B\e[m\e[36m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[16;3H\e(B\e[m\e[36m\e]8;;\e\\0s\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 9 + content: "\e[?25l\e[18;42H\e(B\e[m\e]8;;\e\\ \e[18;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;42H\e(B\e[m\e]8;;\e\\ \e[19;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;42H\e(B\e[m\e]8;;\e\\ \e[20;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[21;42H\e(B\e[m\e]8;;\e\\ \e[21;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[22;42H\e(B\e[m\e]8;;\e\\ \e[22;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[23;43H\e(B\e[m\e]8;;\e\\ \e[23;51H \e[23;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[24;4H\e(B\e[m\e]8;;\e\\ src\e[24;42H \e[24;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[25;6H\e(B\e[m\e[44m\e[1m\e]8;;\e\\ users.go \e[25;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[30;120H│\e[?25l\e[?25l\e[9;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[10;120H█\e[11;120H█\e[12;120H█\e[13;120H█\e[14;120H█\e[15;120H█\e[16;41H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\█\e[17;41H│\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\█\e[18;120H█\e[19;120H█\e[20;120H█\e[30;120H▼\e[?25l" + - delay: 7 + content: "\e[?25l\e[3;57H\e(B\e[m\e[1m\e]8;;\e\\c048119\e[6;51H\e(B\e[m\e[36m\e]8;;\e\\7\e[12;46H\e(B\e[m\e[32m\e]8;;\e\\fmt.Println(\"hello world\")\e(B\e[m\e]8;;\e\\ \e[13;43H\e(B\e[m\e[32m\e]8;;\e\\}\e[13;46H\e(B\e[m\e]8;;\e\\ \e[14;42H \e[21;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[?25l" + - delay: 602 + content: "\e[?25l\e[35;45H\e(B\e[m\e[36m\e[1m\e]8;;\e\\sc> \e[?25l\e[?25l\e[23;3H\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;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[24;4H5bae7349\e[24;13H\e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e[24;16H\e(B\e[m\e]8;;\e\\Enhance\e[24;24Huser\e[24;29Hauthenticat\e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[25;2H\e(B\e[m\e[93;44m\e[1m\e]8;;\e\\ﰖ\e[25;4H6b136083\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\\ Stop\e[25;21Husing\e[25;27Hshims\e[25;40H\e(B\e[m\e[32m\e[1m\e]8;;\e\\█\e[26;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[26;4H63843bd1\e[26;13H\e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e[26;16H\e(B\e[m\e]8;;\e\\Fix\e[26;20Hlocal\e[26;26Hsession\e[26;34Hstorag\e[27;2H\e(B\e[m\e[33m\e]8;;\e\\ﰖ\e[27;4He88e6289\e[27;13H\e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e[27;16H\e(B\e[m\e]8;;\e\\Add\e[27;20Huser\e[27;25Hauthentication\e[28;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e[28;4Hdef5dfdb\e[28;13H\e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e[28;16H\e(B\e[m\e]8;;\e\\Improve\e[28;24HDockerfile\e[28;35Hfor\e[28;39Hm\e[29;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e[29;4H00cad740\e[29;13H\e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e[29;16H\e(B\e[m\e]8;;\e\\Implement\e[29;26Huser\e[29;31Hblocking\e[30;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e[30;4Hf753046f\e[30;13H\e(B\e[m\e[38;2;73;40;205m\e]8;;\e\\CI\e[30;16H\e(B\e[m\e]8;;\e\\Refactor\e[30;25Huser\e[30;30Hnotificati\e(B\e[m\e[32m\e[1m\e]8;;\e\\▼\e[31;32H2 of 34\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;42H\e(B\e[m\e[33m\e]8;;\e\\commit 6b1360839224d9498f104fb34f7e6f346c593c2c\e[3;42H\e(B\e[m\e]8;;\e\\Author: CI \e[4;42HDate: Fri Aug 4 09:11:17\e[4;69H2023\e[4;74H+1000\e[5;42H \e[6;42H Stop using\e[6;57Hshims\e[7;42H--- \e[7;51H \e[8;42H src/users.go\e[8;56H|\e[8;58H6\e[8;60H\e(B\e[m\e[32m\e]8;;\e\\++++++\e[9;42H\e(B\e[m\e]8;;\e\\ 1 file changed,\e[9;59H6\e[9;61Hinsertions(+)\e[10;42H \e[11;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/users.go b/src/users.go\e[12;42Hindex 06ab7d0..c048119 100644\e(B\e[m\e]8;;\e\\ \e[13;42H\e(B\e[m\e[1m\e]8;;\e\\--- a/src/users.go\e[14;42H+++ b/src/users.go\e[15;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -1 +1,7 @@\e[16;43H\e(B\e[m\e]8;;\e\\package\e[16;51Hmain\e[17;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[18;42H+import \"fmt\"\e[18;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[19;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;42H\e(B\e[m\e[32m\e]8;;\e\\+func main() {\e[20;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[21;42H\e(B\e[m\e[32m\e]8;;\e\\+\e[21;46Hfmt.Println(\"hello world\")\e[21;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[22;42H\e(B\e[m\e[32m\e]8;;\e\\+}\e[?25l" + - delay: 604 + content: "\e[?25l\e[35;34H\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;8H \e[35;10H \e[35;15H \e[35;20H \e[35;23H \e[35;27H \e[?25l" + - delay: 2001 + 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/undo-compressed.gif b/demo/undo-compressed.gif new file mode 100644 index 000000000..eba257f30 Binary files /dev/null and b/demo/undo-compressed.gif differ diff --git a/demo/undo.gif b/demo/undo.gif new file mode 100644 index 000000000..dd6f4cea4 Binary files /dev/null and b/demo/undo.gif differ diff --git a/demo/undo.yml b/demo/undo.yml new file mode 100644 index 000000000..b264040cf --- /dev/null +++ b/demo/undo.yml @@ -0,0 +1,221 @@ +# 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/undo.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: 6538 + 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: 71 + 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]8;;\e\\ repo → master \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\\ שׂ 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[16;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[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 1─┘│\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\\5333ebb6\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 Dockerfile for m\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\\5d80789b\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\\ Implement user blocking \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\\a196af6e\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 user notificati\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\\b7e7b4e4\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\\ Upgrade Rails version to\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\\ae9eacca\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\\ Move global variables to\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\\8f73b67f\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\\ Fix typos in documentati\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\\fbe929b7\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\\ Optimize Lazygit startup\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 30─┘└──────────────────────────────────────────────────────────────────────────────┘\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\\/: Scroll, : Cancel, q: Quit, ?: Keybindings, 1-5: Jump to panel, H/L: Scroll left/right \e[?25l\e[?25l\e[13;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\0 of 0\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\\Undo\e[35;6Hcommands\e[?25l" + - delay: 1002 + content: "\e[?25l\e[35;15H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing 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[5;40H│\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└───────────────────────────────0 of 0─┘\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\\5333ebb6\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 Dockerfile for m\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 30─┘\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;42H\e(B\e[m\e[33m\e]8;;\e\\commit 5333ebb6aae9d82dcdd2d39506602bd3bdb3b235 (\e(B\e[m\e[36m\e[1m\e]8;;\e\\HEAD -> \e(B\e[m\e[32m\e[1m\e]8;;\e\\master\e(B\e[m\e[33m\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\\Author:\e[3;50HCI\e[3;53H\e[3;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[4;42H\e(B\e[m\e]8;;\e\\Date:\e[4;50HThu\e[4;54HAug\e[4;58H3\e[4;60H19:08:22\e[4;69H2023\e[4;74H+1000\e[4;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[5;120H█\e[6;46H\e(B\e[m\e]8;;\e\\Improve\e[6;54HDockerfile\e[6;65Hfor\e[6;69Hmore\e[6;74Hefficient\e[6;84Hbuilds\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;43H\e(B\e[m\e]8;;\e\\Dockerfile\e[8;54H|\e[8;56H1\e[8;58H\e(B\e[m\e[32m\e]8;;\e\\+\e[8;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[9;43H\e(B\e[m\e]8;;\e\\1\e[9;45Hfile\e[9;50Hchanged,\e[9;59H1\e[9;61Hinsertion(+)\e[9;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[10;120H█\e[11;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/Dockerfile b/Dockerfile\e[11;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[12;42H\e(B\e[m\e[1m\e]8;;\e\\new file mode 100644\e[12;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[13;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..311a4a0\e[13;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[14;42H\e(B\e[m\e[1m\e]8;;\e\\--- /dev/null\e[14;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[15;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/Dockerfile\e[15;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[16;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e[16;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[17;42H\e(B\e[m\e[32m\e]8;;\e\\+FROM ubuntu:18.04\e[17;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[18;42H\e(B\e[m\e]8;;\e\\\\\e[18;44HNo\e[18;47Hnewline\e[18;55Hat\e[18;58Hend\e[18;62Hof\e[18;65Hfile\e[18;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[19;120H█\e[30;120H▼\e[?25l" + - delay: 602 + content: "\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\Drop\e[35;6Htwo commits \e[?25l" + - delay: 1003 + content: "\e[?25l\e[35;18H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing d \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Delete commit─────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to delete this commit? \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└──────────────────────────────1 of 30─┘\e[?25l" + - delay: 1104 + content: "\e[?25l\e[35;27H\e(B\e[m\e[36m\e[1m\e]8;;\e\\\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\\+FROM ubuntu:18.04\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└──────────────────────────────1 of 30─┘\e[33;42H\e(B\e[m\e]8;;\e\\merges\e[33;49H5d80789b446ff36d6a4a8beb13a69017c63e544c\e[?25l" + - delay: 6 + content: "\e[?25l\e[?25l" + - delay: 40 + 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: 42 + content: "\e[?25l\e[35;104H\e(B\e[m\e[36m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[24;5H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\d80789b\e[24;19H\e(B\e[m\e[44m\e[1m\e]8;;\e\\lem\e[24;23Hnt us\e[24;30H b\e[24;33Hocking \e[25;4H\e(B\e[m\e[32m\e]8;;\e\\a196af6e\e[25;16H\e(B\e[m\e]8;;\e\\Refactor user notificati\e[26;4H\e(B\e[m\e[32m\e]8;;\e\\b7e7b4e4\e[26;16H\e(B\e[m\e]8;;\e\\Upgrade Rails\e[26;30Hversion \e[26;39Ho\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\ae9eacca\e[27;16H\e(B\e[m\e]8;;\e\\Move glob\e[27;26Hl variables\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\8f73b67f\e[28;16H\e(B\e[m\e]8;;\e\\Fix typ\e[28;24Hs in documenta\e[28;39Hi\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\fbe929b7\e[29;16H\e(B\e[m\e]8;;\e\\Optimize Lazygit startup\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\e3c1f2a6\e[30;16H\e(B\e[m\e]8;;\e\\Refactor\e[30;25Hlogic in L\e[30;36Hzygi\e[31;37H\e(B\e[m\e[32m\e[1m\e]8;;\e\\29\e[?25l\e[?25l\e[?25l" + - delay: 9 + content: "\e[?25l\e[2;50H\e(B\e[m\e[33m\e]8;;\e\\d80789b446ff36\e[2;65H6a4a8beb13a69017c63e544c\e[6;49H\e(B\e[m\e]8;;\e\\lem\e[6;53Hnt us\e[6;60H b\e[6;63Hocking functionality\e[6;84H \e[8;43Huser/blocking.go\e[8;60H|\e[8;62H1\e[8;64H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;55H\e(B\e[m\e[1m\e]8;;\e\\user/blocking.go b/user/blocking.go\e[13;57H47068eb\e[15;48Huser/blocking.go\e[17;43H\e(B\e[m\e[32m\e]8;;\e\\package user\e(B\e[m\e]8;;\e\\ \e[?25l" + - delay: 34 + content: "\e[?25l\e[?25l" + - delay: 603 + content: "\e[?25l\e[35;27H\e(B\e[m\e[36m\e[1m\e]8;;\e\\d \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Delete commit─────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to delete this commit? \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└──────────────────────────────1 of 29─┘\e[?25l" + - delay: 1101 + content: "\e[?25l\e[35;27H\e(B\e[m\e[36m\e[1m\e]8;;\e\\\e[?25l" + - delay: 5 + 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 user\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└──────────────────────────────1 of 29─┘\e[33;49H\e(B\e[m\e]8;;\e\\a196af6e0dd00d9c04c410\e[33;72H47f7aeb7c\e[33;82H7\e[33;84Haa237\e[?25l" + - delay: 9 + content: "\e[?25l\e[?25l" + - delay: 39 + 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: 49 + content: "\e[?25l\e[35;104H\e(B\e[m\e[36m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 8 + content: "\e[?25l\e[24;4H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\a196af6e\e[24;16H\e(B\e[m\e[44m\e[1m\e]8;;\e\\Refactor user notificati\e[25;4H\e(B\e[m\e[32m\e]8;;\e\\b7e7b4e4\e[25;16H\e(B\e[m\e]8;;\e\\Upgrade Rails\e[25;30Hversion \e[25;39Ho\e[26;4H\e(B\e[m\e[32m\e]8;;\e\\ae9eacca\e[26;16H\e(B\e[m\e]8;;\e\\Move glob\e[26;26Hl variables\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\8f73b67f\e[27;16H\e(B\e[m\e]8;;\e\\Fix typ\e[27;24Hs in documenta\e[27;39Hi\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\fbe929b7\e[28;16H\e(B\e[m\e]8;;\e\\Optimize Lazygit startup\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\e3c1f2a6\e[29;16H\e(B\e[m\e]8;;\e\\Refactor\e[29;25Hlogic in L\e[29;36Hzygi\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\482\e[30;8Had\e[30;11H8\e[30;16H\e(B\e[m\e]8;;\e\\Add sorting feature to p\e[31;38H\e(B\e[m\e[32m\e[1m\e]8;;\e\\8\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\a196af6e0dd00d9c04c410\e[2;72H47f7aeb7c\e[2;82H7\e[2;84Haa237\e[4;67H\e(B\e[m\e]8;;\e\\1\e[6;46HRefactor user notifications system \e[8;43Hnotificatio\e[8;55H/user_notification.go\e[8;77H|\e[8;79H1\e[8;81H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;55H\e(B\e[m\e[1m\e]8;;\e\\notificatio\e[11;67H/user_notification.\e[11;87Ho \e[12;42Hb/not\e[12;48Hfication/user_notification.go\e[13;42Hnew file mode 100644\e(B\e[m\e]8;;\e\\ \e[14;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..2f4b99f\e[15;42H---\e[15;46H/dev/nul\e[15;55H\e(B\e[m\e]8;;\e\\ \e[16;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/notification/user_notification.go\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\\+package notification\e(B\e[m\e]8;;\e\\ \e[18;65H \e[19;42H\\\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[?25l" + - delay: 26 + content: "\e[?25l\e[?25l" + - delay: 604 + content: "\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\Undo\e[35;7Hhe\e[35;10Hdrops \e[35;18H \e[?25l" + - delay: 1002 + content: "\e[?25l\e[35;16H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing z \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Undo──────────────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to hard reset to \e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[18;21H│\e(B\e[m\e[1m\e]8;;\e\\'5d80789b446ff36d6a4a8beb13a69017c63e544c'? An auto-stash will be performed if \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└──────────────────────────────1 of 28─┘\e[?25l" + - delay: 1103 + content: "\e[?25l\e[35;25H\e(B\e[m\e[36m\e[1m\e]8;;\e\\\e[?25l\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[1m\e]8;;\e\\+++ b/notification/user_notification.go\e(B\e[m\e]8;;\e\\ \e[17;21H \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[18;21H \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[32m\e]8;;\e\\+package notification\e(B\e[m\e]8;;\e\\ \e[19;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└──────────────────────────────1 of 28─┘\e[33;42H\e(B\e[m\e]8;;\e\\ git reset --har\e[33;60H 5\e[33;63H80789b446ff36d6a4a8beb13a69017c63e544c\e[?25l" + - delay: 9 + content: "\e[?25l\e[?25l" + - delay: 19 + content: "\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 7 + content: "\e[?25l\e[24;4H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\5d80789b\e[24;16H\e(B\e[m\e[44m\e[1m\e]8;;\e\\Implement user blocking \e[25;4H\e(B\e[m\e[32m\e]8;;\e\\a196af6e\e[25;16H\e(B\e[m\e]8;;\e\\Refactor user\e[25;30Hnotifica\e[25;39Hi\e[26;4H\e(B\e[m\e[32m\e]8;;\e\\b7e7b4e4\e[26;16H\e(B\e[m\e]8;;\e\\Upgrade R\e[26;26Hils version\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\ae9eacca\e[27;16H\e(B\e[m\e]8;;\e\\Move gl\e[27;24Hbal variables \e[27;39Ho\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\8f73b67f\e[28;16H\e(B\e[m\e]8;;\e\\Fix typos in documentati\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\fbe929b7\e[29;16H\e(B\e[m\e]8;;\e\\Optimize\e[29;25HLazygit st\e[29;36Hrtup\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\e3c\e[30;8Hf2\e[30;11H6\e[30;16H\e(B\e[m\e]8;;\e\\Refactor logic in Lazygi\e[31;38H\e(B\e[m\e[32m\e[1m\e]8;;\e\\9\e[?25l\e[?25l\e[?25l" + - delay: 8 + content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\5d80789b446ff36d6a4a8b\e[2;72Hb13a69017\e[2;82H6\e[2;84He544c\e[4;67H\e(B\e[m\e]8;;\e\\2\e[6;46HImplement user blocking functionality\e[8;43Huser/blocki\e[8;55Hg.go | 1 \e(B\e[m\e[32m\e]8;;\e\\+\e(B\e[m\e]8;;\e\\ \e[8;77H \e[8;79H \e[8;81H \e[11;55H\e(B\e[m\e[1m\e]8;;\e\\user/blocki\e[11;67Hg.go b/user/blockin\e[11;87H.go\e(B\e[m\e]8;;\e\\ \e[12;42H\e(B\e[m\e[1m\e]8;;\e\\new f\e[12;48Hle mode 100644\e(B\e[m\e]8;;\e\\ \e[13;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..47068eb\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/user/b\e[15;55Hocking.go\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\\+package user\e[18;42H\e(B\e[m\e]8;;\e\\\\ No newline at end of\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\e[?25l\e[?25l" + - delay: 603 + content: "\e[?25l\e[35;25H\e(B\e[m\e[36m\e[1m\e]8;;\e\\z \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Undo──────────────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to hard reset to \e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[18;21H│\e(B\e[m\e[1m\e]8;;\e\\'5333ebb6aae9d82dcdd2d39506602bd3bdb3b235'? An auto-stash will be performed if \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└──────────────────────────────1 of 29─┘\e[?25l" + - delay: 1103 + content: "\e[?25l\e[35;25H\e(B\e[m\e[36m\e[1m\e]8;;\e\\\e[?25l" + - delay: 5 + 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 user\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[19;21H \e(B\e[m\e[30m\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└──────────────────────────────1 of 29─┘\e[33;62H\e(B\e[m\e]8;;\e\\333ebb6aae9d82\e[33;77Hcdd2d39506602bd3bdb3b235\e[?25l" + - delay: 8 + content: "\e[?25l\e[?25l" + - delay: 18 + content: "\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 5 + content: "\e[?25l\e[?25l\e[?25l\e[24;5H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\333ebb6\e[24;19H\e(B\e[m\e[44m\e[1m\e]8;;\e\\rov\e[24;23H Dock\e[24;30Hfi\e[24;33He for m\e[25;4H\e(B\e[m\e[32m\e]8;;\e\\5d80789b\e[25;16H\e(B\e[m\e]8;;\e\\Implement user blocking \e[26;4H\e(B\e[m\e[32m\e]8;;\e\\a196af6e\e[26;16H\e(B\e[m\e]8;;\e\\Refactor user\e[26;30Hnotifica\e[26;39Hi\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\b7e7b4e4\e[27;16H\e(B\e[m\e]8;;\e\\Upgrade R\e[27;26Hils version\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\ae9eacca\e[28;16H\e(B\e[m\e]8;;\e\\Move gl\e[28;24Hbal variables \e[28;39Ho\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\8f73b67f\e[29;16H\e(B\e[m\e]8;;\e\\Fix typos in documentati\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\fbe929b7\e[30;16H\e(B\e[m\e]8;;\e\\Optimize\e[30;25HLazygit st\e[30;36Hrtup\e[31;37H\e(B\e[m\e[32m\e[1m\e]8;;\e\\30\e[?25l\e[?25l\e[?25l" + - delay: 8 + content: "\e[?25l\e[?25l\e[?25l\e[2;50H\e(B\e[m\e[33m\e]8;;\e\\333ebb6aae9d82\e[2;65Hcdd2d39506602bd3bdb3b235\e[6;49H\e(B\e[m\e]8;;\e\\rov\e[6;53H Dock\e[6;60Hfi\e[6;63He for more efficient\e[6;84Hbuilds\e[8;43HDockerfile | 1 \e(B\e[m\e[32m\e]8;;\e\\+\e[8;60H\e(B\e[m\e]8;;\e\\ \e[8;62H \e[8;64H \e[11;55H\e(B\e[m\e[1m\e]8;;\e\\Dockerfile b/Dockerfile\e(B\e[m\e]8;;\e\\ \e[13;57H\e(B\e[m\e[1m\e]8;;\e\\311a4a0\e[15;48HDockerfile\e(B\e[m\e]8;;\e\\ \e[17;43H\e(B\e[m\e[32m\e]8;;\e\\FROM ubuntu:18.04\e[?25l" + - delay: 602 + content: "\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\Re\e[35;16H \e[?25l" + - delay: 1002 + content: "\e[?25l\e[35;16H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Redo──────────────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to hard reset to \e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[18;21H│\e(B\e[m\e[1m\e]8;;\e\\'5d80789b446ff36d6a4a8beb13a69017c63e544c'? An auto-stash will be performed if \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└──────────────────────────────1 of 30─┘\e[?25l" + - delay: 1106 + content: "\e[?25l\e[35;26H\e(B\e[m\e[36m\e[1m\e]8;;\e\\enter>\e[?25l" + - delay: 5 + 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\\+FROM ubuntu:18.04\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[19;21H \e(B\e[m\e[30m\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└──────────────────────────────1 of 30─┘\e[33;62H\e(B\e[m\e]8;;\e\\d80789b446ff36\e[33;77H6a4a8beb13a69017c63e544c\e[?25l" + - delay: 8 + content: "\e[?25l\e[?25l" + - delay: 19 + content: "\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 5 + content: "\e[?25l\e[24;5H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\d80789b\e[24;19H\e(B\e[m\e[44m\e[1m\e]8;;\e\\lem\e[24;23Hnt us\e[24;30H b\e[24;33Hocking \e[25;4H\e(B\e[m\e[32m\e]8;;\e\\a196af6e\e[25;16H\e(B\e[m\e]8;;\e\\Refactor user notificati\e[26;4H\e(B\e[m\e[32m\e]8;;\e\\b7e7b4e4\e[26;16H\e(B\e[m\e]8;;\e\\Upgrade Rails\e[26;30Hversion \e[26;39Ho\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\ae9eacca\e[27;16H\e(B\e[m\e]8;;\e\\Move glob\e[27;26Hl variables\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\8f73b67f\e[28;16H\e(B\e[m\e]8;;\e\\Fix typ\e[28;24Hs in documenta\e[28;39Hi\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\fbe929b7\e[29;16H\e(B\e[m\e]8;;\e\\Optimize Lazygit startup\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\e3c1f2a6\e[30;16H\e(B\e[m\e]8;;\e\\Refactor\e[30;25Hlogic in L\e[30;36Hzygi\e[31;37H\e(B\e[m\e[32m\e[1m\e]8;;\e\\29\e[?25l\e[?25l\e[?25l" + - delay: 7 + content: "\e[?25l\e[2;50H\e(B\e[m\e[33m\e]8;;\e\\d80789b446ff36\e[2;65H6a4a8beb13a69017c63e544c\e[6;49H\e(B\e[m\e]8;;\e\\lem\e[6;53Hnt us\e[6;60H b\e[6;63Hocking functionality\e[6;84H \e[8;43Huser/blocking.go\e[8;60H|\e[8;62H1\e[8;64H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;55H\e(B\e[m\e[1m\e]8;;\e\\user/blocking.go b/user/blocking.go\e[13;57H47068eb\e[15;48Huser/blocking.go\e[17;43H\e(B\e[m\e[32m\e]8;;\e\\package user\e(B\e[m\e]8;;\e\\ \e[?25l\e[?25l\e[?25l" + - delay: 604 + content: "\e[?25l\e[35;26H\e(B\e[m\e[36m\e[1m\e]8;;\e\\c-z> \e[?25l\e[?25l\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Redo──────────────────────────────────────────────────────────────────────────┐\e[17;21H│\e(B\e[m\e[1m\e]8;;\e\\Are you sure you want to hard reset to \e(B\e[m\e[32m\e[1m\e]8;;\e\\▲\e[18;21H│\e(B\e[m\e[1m\e]8;;\e\\'a196af6e0dd00d9c04c410e47f7aeb7cc73aa237'? An auto-stash will be performed if \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└──────────────────────────────1 of 29─┘\e[?25l" + - delay: 1103 + content: "\e[?25l\e[35;26H\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 user\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[19;21H \e(B\e[m\e[30m\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└──────────────────────────────1 of 29─┘\e[33;61H\e(B\e[m\e]8;;\e\\a196af6e0dd00d9c04c410\e[33;84H47f7aeb7c\e[33;94H7\e[33;96Haa237\e[?25l" + - delay: 8 + content: "\e[?25l\e[?25l" + - delay: 18 + content: "\e[?25l\e[?25l\e[?25l\e[?25l" + - delay: 7 + content: "\e[?25l\e[24;4H\e(B\e[m\e[92;44m\e[1m\e]8;;\e\\a196af6e\e[24;16H\e(B\e[m\e[44m\e[1m\e]8;;\e\\Refactor user notificati\e[25;4H\e(B\e[m\e[32m\e]8;;\e\\b7e7b4e4\e[25;16H\e(B\e[m\e]8;;\e\\Upgrade Rails\e[25;30Hversion \e[25;39Ho\e[26;4H\e(B\e[m\e[32m\e]8;;\e\\ae9eacca\e[26;16H\e(B\e[m\e]8;;\e\\Move glob\e[26;26Hl variables\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\8f73b67f\e[27;16H\e(B\e[m\e]8;;\e\\Fix typ\e[27;24Hs in documenta\e[27;39Hi\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\fbe929b7\e[28;16H\e(B\e[m\e]8;;\e\\Optimize Lazygit startup\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\e3c1f2a6\e[29;16H\e(B\e[m\e]8;;\e\\Refactor\e[29;25Hlogic in L\e[29;36Hzygi\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\482\e[30;8Had\e[30;11H8\e[30;16H\e(B\e[m\e]8;;\e\\Add sorting feature to p\e[31;38H\e(B\e[m\e[32m\e[1m\e]8;;\e\\8\e[?25l\e[?25l\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;49H\e(B\e[m\e[33m\e]8;;\e\\a196af6e0dd00d9c04c410\e[2;72H47f7aeb7c\e[2;82H7\e[2;84Haa237\e[4;67H\e(B\e[m\e]8;;\e\\1\e[6;46HRefactor user notifications system \e[8;43Hnotificatio\e[8;55H/user_notification.go\e[8;77H|\e[8;79H1\e[8;81H\e(B\e[m\e[32m\e]8;;\e\\+\e[11;55H\e(B\e[m\e[1m\e]8;;\e\\notificatio\e[11;67H/user_notification.\e[11;87Ho \e[12;42Hb/not\e[12;48Hfication/user_notification.go\e[13;42Hnew file mode 100644\e(B\e[m\e]8;;\e\\ \e[14;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..2f4b99f\e[15;42H---\e[15;46H/dev/nul\e[15;55H\e(B\e[m\e]8;;\e\\ \e[16;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/notification/user_notification.go\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\\+package notification\e(B\e[m\e]8;;\e\\ \e[18;65H \e[19;42H\\\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[?25l\e[?25l\e[?25l" + - delay: 603 + content: "\e[?25l\e[35;16H\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;6H \e[35;10H \e[?25l" + - delay: 2001 + 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/worktree_create_from_branches-compressed.gif b/demo/worktree_create_from_branches-compressed.gif new file mode 100644 index 000000000..f7c7e30f8 Binary files /dev/null and b/demo/worktree_create_from_branches-compressed.gif differ diff --git a/demo/worktree_create_from_branches.gif b/demo/worktree_create_from_branches.gif new file mode 100644 index 000000000..147cf36d2 Binary files /dev/null and b/demo/worktree_create_from_branches.gif differ diff --git a/demo/worktree_create_from_branches.yml b/demo/worktree_create_from_branches.yml new file mode 100644 index 000000000..f003e830d --- /dev/null +++ b/demo/worktree_create_from_branches.yml @@ -0,0 +1,207 @@ +# 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/worktree_create_from_branches.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: 4012 + 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: 72 + 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]8;;\e\\ repo → \e(B\e[m\e[32m\e]8;;\e\\feature/user-authentication\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/user-authentication\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\\0s\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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\7d5ec0ec\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\\ Stop using shims \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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\b95d4894\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\\ Fix local session storag\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[33m\e]8;;\e\\ﰖ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[33m\e]8;;\e\\634b8954\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 user authentication \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\\7c37a089\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 Dockerfile for m\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\\9817f309\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\\ Implement user blocking \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\\27f67e6d\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 user notificati\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\\8fb31c27\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\\ Upgrade Rails version to\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 33─┘└──────────────────────────────────────────────────────────────────────────────┘\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\\/: Scroll, : 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[44m\e[1m\e]8;;\e\\▼ \e(B\e[m\e[93;44m\e[1m\e]8;;\e\\ src\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e[6;4H\e(B\e[m\e[31m\e]8;;\e\\??  authentication.go\e[7;4H??  session.go\e[8;4H\e(B\e[m\e[32m\e]8;;\e\\A  shims.go \e[13;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\1 of 4\e[16;41H\e(B\e[m\e[30m\e]8;;\e\\└──────────────────────────────────────────────────────────────────────────────┘\e[17;41H┌─Staged changes───────────────────────────────────────────────────────────────┐\e[?25l" + - delay: 7 + content: "\e[?25l\e[2;42H\e(B\e[m\e]8;;\e\\ \e[2;45H \e[2;53H \e[18;42H\e(B\e[m\e[1m\e]8;;\e\\diff --git a/src/shims.go b/src/shims.go\e[18;120H\e(B\e[m\e[30m\e]8;;\e\\▲\e[19;42H\e(B\e[m\e[1m\e]8;;\e\\new file mode 100644\e[19;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[20;42H\e(B\e[m\e[1m\e]8;;\e\\index 0000000..69dd5b3\e[20;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[21;42H\e(B\e[m\e[1m\e]8;;\e\\--- /dev/null\e[21;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[22;42H\e(B\e[m\e[1m\e]8;;\e\\+++ b/src/shims.go\e[22;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[23;42H\e(B\e[m\e[36m\e]8;;\e\\@@ -0,0 +1 @@\e[23;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[24;42H\e(B\e[m\e[32m\e]8;;\e\\+// removing for now\e[24;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[25;42H\e(B\e[m\e]8;;\e\\\\\e[25;44HNo\e[25;47Hnewline\e[25;55Hat\e[25;58Hend\e[25;62Hof\e[25;65Hfile\e[30;120H\e(B\e[m\e[30m\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\\ \e[?25l\e[?25l\e[?25l\e[?25l\e[35;1H\e(B\e[m\e[37m\e[1m\e]8;;\e\\Create\e[35;8Ha\e[35;10Hworktree\e[35;19Hfrom\e[35;24Ha\e[35;26Hbranch\e[?25l" + - delay: 1002 + content: "\e[?25l\e[35;33H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing 3 \e[?25l" + - delay: 5 + content: "\e[?25l\e[1;43H\e(B\e[m\e[30m\e]8;;\e\\Log─────────────\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]8;;\e\\▼ \e(B\e[m\e[33m\e]8;;\e\\ src\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 4─┘\e[14;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Local branches \e(B\e[m\e]8;;\e\\- Remotes - Tags\e(B\e[m\e[32m\e[1m\e]8;;\e\\──────┐\e[15;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\\שׂ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[92;44m\e[1m\e]8;;\e\\feature/user-authentication\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[16;1H│\e[16;40H│\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[32m\e[1m\e]8;;\e\\│\e[17;40H│\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[32m\e[1m\e]8;;\e\\│\e[18;40H│\e[18;42H\e(B\e[m\e]8;;\e\\ \e[18;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[19;40H│\e[19;42H\e(B\e[m\e]8;;\e\\ \e[19;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[20;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[20;40H│\e[20;42H\e(B\e[m\e]8;;\e\\ \e[20;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[21;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[21;40H│\e[21;42H\e(B\e[m\e]8;;\e\\ \e[21;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[22;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\└───────────────────────────────1 of 2─┘\e[22;42H\e(B\e[m\e]8;;\e\\ \e[22;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[23;42H\e(B\e[m\e]8;;\e\\ \e[23;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[24;42H\e(B\e[m\e]8;;\e\\ \e[24;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[25;42H\e(B\e[m\e]8;;\e\\ \e[25;44H \e[25;47H \e[25;55H \e[25;58H \e[25;62H \e[25;65H \e[30;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[?25l" + - delay: 11 + content: "\e[?25l\e[2;42H\e(B\e[m\e]8;;\e\\*\e[2;44H\e(B\e[m\e[33m\e]8;;\e\\commit 7d5ec0e (\e(B\e[m\e[36m\e[1m\e]8;;\e\\HEAD -> \e(B\e[m\e[32m\e[1m\e]8;;\e\\feature/user-authentication\e(B\e[m\e[33m\e]8;;\e\\)\e[2;120H\e(B\e[m\e[30m\e]8;;\e\\▲\e[3;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[3;44H\e(B\e[m\e]8;;\e\\Author:\e[3;52HCI\e[3;55H\e[3;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[4;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[4;44H\e(B\e[m\e]8;;\e\\Date:\e[4;52H1\e[4;54Hsecond\e[4;61Hago\e[4;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[5;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[5;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[6;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[6;48H\e(B\e[m\e]8;;\e\\Stop\e[6;53Husing\e[6;59Hshims\e[6;120H\e(B\e[m\e[30m\e]8;;\e\\█\e[7;42H\e(B\e[m\e[31m\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(B\e[m\e[33m\e]8;;\e\\commit b95d489\e[9;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[9;44H\e(B\e[m\e]8;;\e\\Author:\e[9;52HCI\e[9;55H\e[10;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[10;44H\e(B\e[m\e]8;;\e\\Date:\e[10;52H1\e[10;54Hsecond\e[10;61Hago\e[11;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[12;42H|\e[12;48H\e(B\e[m\e]8;;\e\\Fix\e[12;52Hlocal\e[12;58Hsession\e[12;66Hstorage\e[13;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[14;42H\e(B\e[m\e]8;;\e\\*\e[14;44H\e(B\e[m\e[33m\e]8;;\e\\commit 634b895\e[15;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[15;44H\e(B\e[m\e]8;;\e\\Author:\e[15;52HCI\e[15;55H\e[16;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[16;44H\e(B\e[m\e]8;;\e\\Date:\e[16;52H1\e[16;54Hsecond\e[16;61Hago\e[17;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[18;42H|\e[18;48H\e(B\e[m\e]8;;\e\\Add\e[18;52Huser\e[18;57Hauthentication\e[18;72Hfeature\e[19;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[20;42H\e(B\e[m\e]8;;\e\\*\e[20;44H\e(B\e[m\e[33m\e]8;;\e\\commit 7c37a08 (\e(B\e[m\e[32m\e[1m\e]8;;\e\\master\e(B\e[m\e[33m\e]8;;\e\\)\e[21;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[21;44H\e(B\e[m\e]8;;\e\\Author:\e[21;52HCI\e[21;55H\e[22;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[22;44H\e(B\e[m\e]8;;\e\\Date:\e[22;52H1\e[22;54Hsecond\e[22;61Hago\e[23;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[24;42H|\e[24;48H\e(B\e[m\e]8;;\e\\Improve\e[24;56HDockerfile\e[24;67Hfor\e[24;71Hmore\e[24;76Hefficient\e[24;86Hbuilds\e[25;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[26;42H\e(B\e[m\e]8;;\e\\*\e[26;44H\e(B\e[m\e[33m\e]8;;\e\\commit 9817f30\e[27;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[27;44H\e(B\e[m\e]8;;\e\\Author:\e[27;52HCI\e[27;55H\e[28;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[28;44H\e(B\e[m\e]8;;\e\\Date:\e[28;52H1\e[28;54Hsecond\e[28;61Hago\e[29;42H\e(B\e[m\e[31m\e]8;;\e\\|\e[30;42H|\e[30;48H\e(B\e[m\e]8;;\e\\Implement\e[30;58Huser\e[30;63Hblocking\e[30;72Hfunctionality\e[30;120H\e(B\e[m\e[30m\e]8;;\e\\▼\e[?25l\e[?25l\e[?25l" + - delay: 604 + content: "\e[?25l\e[35;33H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[?25l\e[?25l\e[15;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\\שׂ\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[32m\e]8;;\e\\feature/user-authentication\e(B\e[m\e]8;;\e\\ \e[16;2H\e(B\e[m\e[96;44m\e[1m\e]8;;\e\\0s\e(B\e[m\e[44m\e[1m\e]8;;\e\\ שׂ master \e[22;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\2\e[?25l" + - delay: 10 + content: "\e[?25l\e[2;52H\e(B\e[m\e[33m\e]8;;\e\\c37a\e[2;57H8\e[2;60H\e(B\e[m\e[32m\e[1m\e]8;;\e\\master\e(B\e[m\e[33m\e]8;;\e\\)\e(B\e[m\e]8;;\e\\ \e[4;52H2\e[4;60Hs ago\e[6;48HImprove Dockerfile\e[6;67Hfor\e[6;71Hmore\e[6;76Hefficient\e[6;86Hbuilds\e[7;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[8;51H\e(B\e[m\e[33m\e]8;;\e\\9817f30\e[10;52H\e(B\e[m\e]8;;\e\\2\e[10;60Hs ago\e[12;48HImplement\e[12;58Huser blocking functionality\e[14;51H\e(B\e[m\e[33m\e]8;;\e\\27f67e6\e[16;52H\e(B\e[m\e]8;;\e\\2\e[16;60Hs ago\e[18;48HRefacto\e[18;57Huser \e[18;63Hotifications system\e[20;51H\e(B\e[m\e[33m\e]8;;\e\\8fb31c2\e(B\e[m\e]8;;\e\\ \e[22;52H2\e[22;60Hs ago\e[24;48HUpg\e[24;52Had\e[24;56HRails version to 6.1.4 \e[24;86H \e[26;51H\e(B\e[m\e[33m\e]8;;\e\\d60547\e[28;52H\e(B\e[m\e]8;;\e\\2\e[28;60Hs ago\e[30;48HMove global variables to e\e[30;75Hvir\e[30;80Hmen\e[30;84H config\e[?25l\e[?25l\e[5;120H\e(B\e[m\e[30m\e]8;;\e\\│\e[6;120H│\e[?25l" + - delay: 625 + content: "\e[?25l\e[35;33H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing w \e[?25l\e[?25l\e[14;1H\e(B\e[m\e[30m\e]8;;\e\\┌─\e(B\e[m\e[32m\e]8;;\e\\Local branches \e(B\e[m\e[30m\e]8;;\e\\- R\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Worktree───\e[14;40H─────────────────────────────────────────────────────────────┐\e[15;1H\e(B\e[m\e[30m\e]8;;\e\\│\e[15;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e[44m\e[1m\e]8;;\e\\Create worktree from master \e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[16;1H\e(B\e[m\e[30m\e]8;;\e\\│\e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\Create worktree from mas\e[16;48Hr\e[16;50H(detached) \e[16;62H \e[16;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[17;1H\e(B\e[m\e[30m\e]8;;\e\\│\e[17;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e(B\e[m\e]8;;\e\\Cancel\e[17;40H \e[17;101H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[18;1H\e(B\e[m\e[30m\e]8;;\e\\│\e[18;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\└────────────────────────────────────────────────────────────────────────1 of 3─┘\e[19;1H\e(B\e[m\e[30m\e]8;;\e\\│\e[19;40H│\e[20;1H│\e[20;40H│\e[21;1H│\e[21;40H│\e[22;1H└───────────────────────────────2 of 2─┘\e[?25l" + - delay: 1103 + content: "\e[?25l\e[35;42H\e(B\e[m\e[36m\e[1m\e]8;;\e\\\e[?25l\e[?25l\e[14;21H\e(B\e[m\e[30m\e]8;;\e\\emotes - Tags──────┐│\e(B\e[m\e]8;;\e\\* \e(B\e[m\e[33m\e]8;;\e\\commit 27f67e6\e(B\e[m\e]8;;\e\\ \e[15;21H\e(B\e[m\e[32m\e]8;;\e\\authentication\e(B\e[m\e]8;;\e\\ \e(B\e[m\e[30m\e]8;;\e\\││\e(B\e[m\e[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Author: CI \e[16;21H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─New worktree path─────────────────────────────────────────────────────────────┐\e[17;22H\e(B\e[m\e]8;;\e\\ \e[18;94H\e(B\e[m\e[32m\e[1m\e]8;;\e\\──────\e[17;22H\e[?12l\e[?25h\e[0 q" + - delay: 8 + content: "\e[?25l\e[4;52H\e(B\e[m\e]8;;\e\\4\e[10;52H4\e[22;52H4\e[28;52H4\e[17;22H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;22H\e[?12l\e[?25h\e[0 q" + - delay: 602 + content: "\e[?25l\e[35;33H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[17;22H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;22H\e(B\e[m\e]8;;\e\\.\e[17;23H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;23H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;23H\e(B\e[m\e]8;;\e\\.\e[17;24H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[17;24H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;24H\e(B\e[m\e]8;;\e\\/\e[17;25H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[17;25H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;25H\e(B\e[m\e]8;;\e\\h\e[17;26H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;26H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;26H\e(B\e[m\e]8;;\e\\o\e[17;27H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;27H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;27H\e(B\e[m\e]8;;\e\\t\e[17;28H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[17;28H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;28H\e(B\e[m\e]8;;\e\\f\e[17;29H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;29H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;29H\e(B\e[m\e]8;;\e\\i\e[17;30H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;30H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;30H\e(B\e[m\e]8;;\e\\x\e[17;31H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[35;33H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[17;31H\e[?12l\e[?25h\e[0 q\e[?25l\e[16;27H\e(B\e[m\e[32m\e[1m\e]8;;\e\\branch name (leave blank to checkout master)\e[17;22H\e(B\e[m\e]8;;\e\\ \e[17;22H\e[?12l\e[?25h\e[0 q" + - delay: 11 + content: "\e[?25l\e[4;52H\e(B\e[m\e]8;;\e\\6\e[10;52H6\e[22;52H6\e[28;52H6\e[17;22H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;22H\e[?12l\e[?25h\e[0 q" + - delay: 604 + content: "\e[?25l\e[35;33H\e(B\e[m\e[37m\e[1m\e]8;;\e\\ \e[17;22H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;22H\e(B\e[m\e]8;;\e\\h\e[17;23H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;23H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;23H\e(B\e[m\e]8;;\e\\o\e[17;24H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;24H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;24H\e(B\e[m\e]8;;\e\\t\e[17;25H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;25H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;25H\e(B\e[m\e]8;;\e\\f\e[17;26H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;26H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;26H\e(B\e[m\e]8;;\e\\i\e[17;27H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;27H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;27H\e(B\e[m\e]8;;\e\\x\e[17;28H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[17;28H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;28H\e(B\e[m\e]8;;\e\\/\e[17;29H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[17;29H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;29H\e(B\e[m\e]8;;\e\\d\e[17;30H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[17;30H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;30H\e(B\e[m\e]8;;\e\\b\e[17;31H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;31H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;31H\e(B\e[m\e]8;;\e\\-\e[17;32H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;32H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;32H\e(B\e[m\e]8;;\e\\o\e[17;33H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[17;33H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;33H\e(B\e[m\e]8;;\e\\n\e[17;34H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[17;34H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;34H\e(B\e[m\e]8;;\e\\-\e[17;35H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[17;35H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;35H\e(B\e[m\e]8;;\e\\f\e[17;36H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[17;36H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;36H\e(B\e[m\e]8;;\e\\i\e[17;37H\e[?12l\e[?25h\e[0 q" + - delay: 123 + content: "\e[?25l\e[17;37H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;37H\e(B\e[m\e]8;;\e\\r\e[17;38H\e[?12l\e[?25h\e[0 q" + - delay: 122 + content: "\e[?25l\e[17;38H\e[?12l\e[?25h\e[0 q\e[?25l\e[17;38H\e(B\e[m\e]8;;\e\\e\e[17;39H\e[?12l\e[?25h\e[0 q" + - delay: 124 + content: "\e[?25l\e[35;33H\e(B\e[m\e[36m\e[1m\e]8;;\e\\Pressing \e[17;39H\e[?12l\e[?25h\e[0 q" + - delay: 5 + content: "\e[?25l\e[14;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\┌─Local branches \e(B\e[m\e]8;;\e\\- Remotes - Tags\e(B\e[m\e[32m\e[1m\e]8;;\e\\──────┐\e[15;1H│\e[15;40H│\e[16;1H│\e[16;21H\e(B\e[m\e[44m\e[1m\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[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Date: 6 seconds ago \e[17;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[17;21H\e(B\e[m\e]8;;\e\\ \e[17;40H\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[31m\e]8;;\e\\|\e[17;101H\e(B\e[m\e]8;;\e\\ \e[18;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[18;21H\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[31m\e]8;;\e\\|\e(B\e[m\e]8;;\e\\ Refactor user notifications system \e[19;1H\e(B\e[m\e[32m\e[1m\e]8;;\e\\│\e[19;40H│\e[20;1H│\e[20;40H│\e[21;1H│\e[21;40H│\e[22;1H└───────────────────────────────2 of 2─┘\e[33;44H\e(B\e[m\e]8;;\e\\git\e[33;48Hworktree\e[33;57Hadd\e[33;61H-b\e[33;64Hhotfix/db-on-fire\e[33;82H../hotfix\e[33;92Hmaster\e[?25l" + - delay: 9 + content: "\e[?25l\e[4;52H\e(B\e[m\e]8;;\e\\8\e[10;52H8\e[16;52H8\e[22;52H8\e[28;52H8\e[?25l\e[?25l\e[?25l" + - delay: 37 + content: "\e[?25l\e[?25l" + - delay: 119 + content: "\e[?25l\e[2;7H\e(B\e[m\e]8;;\e\\(\e[2;10H\e(B\e[m\e[36m\e]8;;\e\\hotfix\e(B\e[m\e]8;;\e\\) → \e(B\e[m\e[31m\e]8;;\e\\hotfix/db-on-fire\e[2;60H\e(B\e[m\e[36m\e[1m\e]8;;\e\\HEAD -> \e(B\e[m\e[32m\e[1m\e]8;;\e\\hotfix/db-on-fire\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[15;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[91;44m\e[1m\e]8;;\e\\שׂ\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e(B\e[m\e[91;44m\e[1m\e]8;;\e\\hotfix/db-on-fire\e(B\e[m\e[44m\e[1m\e]8;;\e\\ \e[16;2H\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/user-authentication\e(B\e[m\e]8;;\e\\  \e[17;6Hשׂ\e[17;8Hmaster\e[22;33H\e(B\e[m\e[32m\e[1m\e]8;;\e\\1\e[22;38H3\e[24;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e[24;4H7c37a089\e[24;16H\e(B\e[m\e]8;;\e\\Improve Dockerfile\e[24;35Hfor\e[24;39Hm\e[25;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e[25;4H9817f309\e[25;16H\e(B\e[m\e]8;;\e\\Implement\e[25;26Huser blocking \e[26;2H\e(B\e[m\e[32m\e]8;;\e\\ﰖ\e[26;4H27f67e6d\e[26;16H\e(B\e[m\e]8;;\e\\Refacto\e[26;25Huser \e[26;31Hotificati\e[27;4H\e(B\e[m\e[32m\e]8;;\e\\8fb31c27\e[27;16H\e(B\e[m\e]8;;\e\\Upg\e[27;20Had\e[27;24HRails version to\e[28;4H\e(B\e[m\e[32m\e]8;;\e\\d60547\e[28;11H8\e[28;16H\e(B\e[m\e]8;;\e\\Move global variables to\e[29;4H\e(B\e[m\e[32m\e]8;;\e\\7111\e[29;10H39\e[29;16H\e(B\e[m\e]8;;\e\\Fix typos in document\e[30;4H\e(B\e[m\e[32m\e]8;;\e\\2d9089cb\e[30;16H\e(B\e[m\e]8;;\e\\O\e[30;18Htimize Lazygit \e[30;34Htartup\e[31;38H\e(B\e[m\e[30m\e]8;;\e\\0\e[33;42H\e(B\e[m\e[35m\e]8;;\e\\ Changing directory to ../hotfix \e[?25l\e[?25l\e[5;2H\e(B\e[m\e]8;;\e\\ \e[5;4H \e[6;4H \e[7;4H \e[8;4H \e[13;33H\e(B\e[m\e[30m\e]8;;\e\\0\e[13;38H0\e[?25l" + - delay: 604 + content: "\e[?25l\e[35;33H\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;8H \e[35;10H \e[35;19H \e[35;24H \e[35;26H \e[?25l" + - delay: 2001 + 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"