Public

Faster.dev CLI Video

How I created the terminal animation effect for the faster.dev video.

Stats
Prompts
43
Tool calls
52
Messages
268
Assets
6
Meta
Author
@aarondfrancis
Created At
February 07, 2026
Source
Claude
Share
Permalink

I need you to create me a bash script that I'm going to use as a part of a video animation. The

Permalink

[Image: source: ~/Library/Application Support/CleanShot/media/media_JLpPswFKPw/CleanShot 2026-01-11 at [redacted-email]]

Permalink

[Request interrupted by user]

Permalink

I need you to create me a bash script that I'm going to use as a part of a video animation. The bash script is going to use ANSI codes to type out some commands.

I'll tell you the process. First of all, it should look as if we're in the faster.dev project on the main branch, with a little caret. This is what I attached an image of what the terminal prompt should look like.

The first thing I want you to do is type out "CODE ." Type that out with about 100 milliseconds in between each character, and then let the cursor blink for about three seconds. Then pretend to backspace it all the way back to the little caret, and then type out "CLAUDE." Then backspace it a little more quickly, and then type out "Gemini." Then backspace it and type out "Codex." Then backspace it and type out "AMP."

Let's start there, and we can get the timings down as we go.

Permalink

[Image: source: ~/Library/Application Support/CleanShot/media/media_aORN53Eg4D/CleanShot 2026-01-11 at [redacted-email]]

Permalink
Thought 1 time. Used 0 tool calls. +0 -0 [Expand]
Thinking

The user wants me to create a bash script for a video animation that simulates typing in a terminal. Let me look at the image to understand the prompt format.

From the image, I can see:

  • "faster.dev" in a dark color (looks like dark purple/black)
  • "main" in teal/green color
  • A "›" character (right angle bracket)
  • A purple/violet colored cursor block

So the prompt looks like: faster.dev main › █

The script needs to:

  1. Show the prompt
  2. Type out "CODE ." with ~100ms between characters
  3. Blink cursor for ~3 seconds
  4. Backspace all the way back
  5. Type "CLAUDE"
  6. Backspace faster
  7. Type "Gemini"
  8. Backspace
  9. Type "Codex"
  10. Backspace
  11. Type "AMP"

I'll create a bash script using ANSI escape codes for colors and cursor manipulation.

Permalink

Looking at the image, I can see the terminal prompt style. Let me create a bash script that simulates this typing animation.

Permalink
Thought 2 times. Used 2 tool calls. +0 -0 [Expand]
Tool: Write
Write
{
  "file_path": "~/Code/faster-hype-term/typing-animation.sh",
  "content": "#!/bin/bash\n\n# ANSI color codes\nDARK_PURPLE=\"\\033[38;5;54m\"\nTEAL=\"\\033[38;5;30m\"\nRESET=\"\\033[0m\"\nCURSOR_BG=\"\\033[48;5;55m\"\n\n# Function to print the prompt\nprint_prompt() {\n    echo -ne \"${DARK_PURPLE}faster.dev ${TEAL}main ${RESET}› \"\n}\n\n# Function to show blinking cursor\nblink_cursor() {\n    local duration=$1\n    local end_time=$((SECONDS + duration))\n    while [ $SECONDS -lt $end_time ]; do\n        echo -ne \"${CURSOR_BG} ${RESET}\"  # Show cursor block\n        sleep 0.5\n        echo -ne \"\\b \"                      # Hide cursor\n        sleep 0.5\n        echo -ne \"\\b\"                       # Move back\n    done\n    echo -ne \"${CURSOR_BG} ${RESET}\"        # Leave cursor visible\n}\n\n# Function to type out text\ntype_text() {\n    local text=\"$1\"\n    local delay=\"${2:-0.1}\"\n    for (( i=0; i<${#text}; i++ )); do\n        echo -ne \"\\b${text:$i:1}${CURSOR_BG} ${RESET}\"\n        sleep \"$delay\"\n    done\n}\n\n# Function to backspace text\nbackspace_text() {\n    local count=$1\n    local delay=\"${2:-0.05}\"\n    for (( i=0; i<count; i++ )); do\n        echo -ne \"\\b\\b ${CURSOR_BG} ${RESET}\\b\\b\"\n        sleep \"$delay\"\n    done\n}\n\n# Clear screen and start\nclear\n\n# Print the prompt\nprint_prompt\necho -ne \"${CURSOR_BG} ${RESET}\"\n\nsleep 0.5\n\n# Type \"CODE .\"\ntype_text \"CODE .\" 0.1\n\n# Blink cursor for 3 seconds\nblink_cursor 3\n\n# Backspace \"CODE .\" (6 characters)\nbackspace_text 6 0.08\n\n# Type \"CLAUDE\"\ntype_text \"CLAUDE\" 0.1\n\nsleep 0.5\n\n# Backspace \"CLAUDE\" faster (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Gemini\"\ntype_text \"Gemini\" 0.1\n\nsleep 0.5\n\n# Backspace \"Gemini\" (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Codex\"\ntype_text \"Codex\" 0.1\n\nsleep 0.5\n\n# Backspace \"Codex\" (5 characters)\nbackspace_text 5 0.04\n\n# Type \"AMP\"\ntype_text \"AMP\" 0.1\n\n# Final pause\nsleep 2\n\necho\n"
}
File created successfully at: ~/Code/faster-hype-term/typing-animation.sh
Thinking

Now let me make it executable and run it to test it.

$ chmod +x ~/Code/faster-hype-term/typing-animation.sh
Thinking

Good, now the script is executable. Let me provide a summary to the user. They can run it and let me know if the timing and colors need adjustment.

Permalink

Done. I've created the script at ~/Code/faster-hype-term/typing-animation.sh.

Run it with:

./typing-animation.sh

The script:

  1. Shows the prompt: faster.dev main › with a purple cursor block
  2. Types "CODE ." at 100ms per character
  3. Blinks the cursor for 3 seconds
  4. Backspaces back to the prompt
  5. Types "CLAUDE" → backspaces faster
  6. Types "Gemini" → backspaces
  7. Types "Codex" → backspaces
  8. Types "AMP"

Let me know how the colors and timing look - I can adjust:

  • The color values (I used dark purple for "faster.dev", teal for "main", and a violet block cursor)
  • Typing speed (currently 100ms)
  • Backspace speed (currently 40-80ms)
  • Pause durations between words
Permalink

It has some errors, and we should also hide the default cursor while we do this.

Permalink

[Image: source: ~/Library/Application Support/CleanShot/media/media_gfz0C9FZu4/CleanShot 2026-01-11 at [redacted-email]]

Permalink
Thought 1 time. Used 0 tool calls. +0 -0 [Expand]
Thinking

I can see from the screenshot that there are multiple cursor blocks appearing and the text is messed up. The backspace logic is clearly broken - it's leaving artifacts. Let me rewrite this with a cleaner approach:

  1. Hide the real cursor
  2. Use a simpler approach - track the current text and redraw the line each time
  3. Show/hide a fake block cursor

Let me rewrite this more carefully.

Permalink

I see the issue - the backspace logic is leaving artifacts everywhere. Let me rewrite this with a cleaner approach that redraws the line properly.

Permalink
Thought 1 time. Used 1 tool call. +0 -0 [Expand]
Tool: Write
Write
{
  "file_path": "~/Code/faster-hype-term/typing-animation.sh",
  "content": "#!/bin/bash\n\n# Hide the real cursor\ntput civis\n\n# Restore cursor on exit\ntrap 'tput cnorm' EXIT\n\n# ANSI color codes\nDARK_PURPLE=\"\\033[38;5;54m\"\nTEAL=\"\\033[38;5;30m\"\nRESET=\"\\033[0m\"\nCURSOR_BG=\"\\033[48;5;55m\"\n\n# Current typed text\nTYPED=\"\"\n\n# Function to render the full line\nrender() {\n    local show_cursor=\"${1:-true}\"\n    # Move to beginning of line and clear it\n    echo -ne \"\\r\\033[K\"\n    # Print prompt + typed text\n    echo -ne \"${DARK_PURPLE}faster.dev ${TEAL}main ${RESET}› ${TYPED}\"\n    # Show cursor block if requested\n    if [ \"$show_cursor\" = \"true\" ]; then\n        echo -ne \"${CURSOR_BG} ${RESET}\"\n    fi\n}\n\n# Function to blink cursor\nblink_cursor() {\n    local duration=$1\n    local end_time=$((SECONDS + duration))\n    while [ $SECONDS -lt $end_time ]; do\n        render true\n        sleep 0.5\n        render false\n        echo -ne \" \"  # Space where cursor was\n        sleep 0.5\n    done\n    render true\n}\n\n# Function to type out text\ntype_text() {\n    local text=\"$1\"\n    local delay=\"${2:-0.1}\"\n    for (( i=0; i<${#text}; i++ )); do\n        TYPED=\"${TYPED}${text:$i:1}\"\n        render true\n        sleep \"$delay\"\n    done\n}\n\n# Function to backspace text\nbackspace_text() {\n    local count=$1\n    local delay=\"${2:-0.05}\"\n    for (( i=0; i<count; i++ )); do\n        if [ ${#TYPED} -gt 0 ]; then\n            TYPED=\"${TYPED:0:-1}\"\n            render true\n            sleep \"$delay\"\n        fi\n    done\n}\n\n# Clear screen and start\nclear\n\n# Initial render with just prompt\nTYPED=\"\"\nrender true\n\nsleep 0.5\n\n# Type \"CODE .\"\ntype_text \"CODE .\" 0.1\n\n# Blink cursor for 3 seconds\nblink_cursor 3\n\n# Backspace \"CODE .\" (6 characters)\nbackspace_text 6 0.08\n\n# Type \"CLAUDE\"\ntype_text \"CLAUDE\" 0.1\n\nsleep 0.5\n\n# Backspace \"CLAUDE\" faster (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Gemini\"\ntype_text \"Gemini\" 0.1\n\nsleep 0.5\n\n# Backspace \"Gemini\" (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Codex\"\ntype_text \"Codex\" 0.1\n\nsleep 0.5\n\n# Backspace \"Codex\" (5 characters)\nbackspace_text 5 0.04\n\n# Type \"AMP\"\ntype_text \"AMP\" 0.1\n\n# Final pause\nsleep 2\n\necho\n"
}
The file ~/Code/faster-hype-term/typing-animation.sh has been updated. Here's the result of running `cat -n` on a snippet of the edited file:
     1→#!/bin/bash
     2→
     3→# Hide the real cursor
     4→tput civis
     5→
     6→# Restore cursor on exit
     7→trap 'tput cnorm' EXIT
     8→
     9→# ANSI color codes
    10→DARK_PURPLE="\033[38;5;54m"
    11→TEAL="\033[38;5;30m"
    12→RESET="\033[0m"
    13→CURSOR_BG="\033[48;5;55m"
    14→
    15→# Current typed text
    16→TYPED=""
    17→
    18→# Function to render the full line
    19→render() {
    20→    local show_cursor="${1:-true}"
    21→    # Move to beginning of line and clear it
    22→    echo -ne "\r\033[K"
    23→    # Print prompt + typed text
    24→    echo -ne "${DARK_PURPLE}faster.dev ${TEAL}main ${RESET}› ${TYPED}"
    25→    # Show cursor block if requested
    26→    if [ "$show_cursor" = "true" ]; then
    27→        echo -ne "${CURSOR_BG} ${RESET}"
    28→    fi
    29→}
    30→
    31→# Function to blink cursor
    32→blink_cursor() {
    33→    local duration=$1
    34→    local end_time=$((SECONDS + duration))
    35→    while [ $SECONDS -lt $end_time ]; do
    36→        render true
    37→        sleep 0.5
    38→        render false
    39→        echo -ne " "  # Space where cursor was
    40→        sleep 0.5
    41→    done
    42→    render true
    43→}
    44→
    45→# Function to type out text
    46→type_text() {
    47→    local text="$1"
    48→    local delay="${2:-0.1}"
    49→    for (( i=0; i<${#text}; i++ )); do
    50→        TYPED="${TYPED}${text:$i:1}"
    51→        render true
    52→        sleep "$delay"
    53→    done
    54→}
    55→
    56→# Function to backspace text
    57→backspace_text() {
    58→    local count=$1
    59→    local delay="${2:-0.05}"
    60→    for (( i=0; i<count; i++ )); do
    61→        if [ ${#TYPED} -gt 0 ]; then
    62→            TYPED="${TYPED:0:-1}"
    63→            render true
    64→            sleep "$delay"
    65→        fi
    66→    done
    67→}
    68→
    69→# Clear screen and start
    70→clear
    71→
    72→# Initial render with just prompt
    73→TYPED=""
    74→render true
    75→
    76→sleep 0.5
    77→
    78→# Type "CODE ."
    79→type_text "CODE ." 0.1
    80→
    81→# Blink cursor for 3 seconds
    82→blink_cursor 3
    83→
    84→# Backspace "CODE ." (6 characters)
    85→backspace_text 6 0.08
    86→
    87→# Type "CLAUDE"
    88→type_text "CLAUDE" 0.1
    89→
    90→sleep 0.5
    91→
    92→# Backspace "CLAUDE" faster (6 characters)
    93→backspace_text 6 0.04
    94→
    95→# Type "Gemini"
    96→type_text "Gemini" 0.1
    97→
    98→sleep 0.5
    99→
   100→# Backspace "Gemini" (6 characters)
   101→backspace_text 6 0.04
   102→
   103→# Type "Codex"
   104→type_text "Codex" 0.1
   105→
   106→sleep 0.5
   107→
   108→# Backspace "Codex" (5 characters)
   109→backspace_text 5 0.04
   110→
   111→# Type "AMP"
   112→type_text "AMP" 0.1
   113→
   114→# Final pause
   115→sleep 2
   116→
   117→echo
   118→
Thinking

The new approach:

  1. Hides the real cursor with tput civis
  2. Restores it on exit with a trap
  3. Uses a TYPED variable to track what's been typed
  4. The render() function clears the line and redraws everything fresh each time
  5. This avoids all the artifact issues from trying to do incremental backspacing

This should work much better.

Permalink

I've rewritten it with a cleaner approach:

  1. Hides the real cursor with tput civis (and restores on exit)
  2. Tracks state in a TYPED variable
  3. Redraws the entire line on each update instead of trying to do incremental backspacing

This should eliminate all the artifacts. Try running it again with ./typing-animation.sh.

Permalink

More errors. Why don't you try to run it until it works, right?

Permalink

[Image: source: ~/Library/Application Support/CleanShot/media/media_RkFLTVwi74/CleanShot 2026-01-11 at [redacted-email]]

Permalink
Thought 1 time. Used 0 tool calls. +0 -0 [Expand]
Thinking

I see the issues from the screenshot:

  1. "substring expression < 0" error on line 62 - the ${TYPED:0:-1} syntax doesn't work when TYPED is empty
  2. The backspace isn't actually clearing - text is accumulating ("CODE .CLAUDEGeminiCodexAMP")
  3. New lines are being created instead of staying on one line

The backspace_text function is trying more backspaces than there are characters, and the substring syntax ${TYPED:0:-1} fails when the string is empty.

Let me fix this and test it properly.

Permalink

I see the issues - the substring syntax is failing and text is accumulating instead of being cleared. Let me fix and test it.

Permalink
Thought 2 times. Used 2 tool calls. +0 -0 [Expand]
Tool: Write
Write
{
  "file_path": "~/Code/faster-hype-term/typing-animation.sh",
  "content": "#!/bin/bash\n\n# Hide the real cursor\ntput civis\n\n# Restore cursor on exit\ntrap 'tput cnorm' EXIT\n\n# ANSI color codes\nDARK_PURPLE=\"\\033[38;5;54m\"\nTEAL=\"\\033[38;5;30m\"\nRESET=\"\\033[0m\"\nCURSOR_BG=\"\\033[48;5;55m\"\n\n# Current typed text\nTYPED=\"\"\n\n# Function to render the full line\nrender() {\n    local show_cursor=\"${1:-true}\"\n    # Move to beginning of line and clear it\n    printf \"\\r\\033[K\"\n    # Print prompt + typed text\n    printf \"${DARK_PURPLE}faster.dev ${TEAL}main ${RESET}› %s\" \"$TYPED\"\n    # Show cursor block if requested\n    if [ \"$show_cursor\" = \"true\" ]; then\n        printf \"${CURSOR_BG} ${RESET}\"\n    fi\n}\n\n# Function to blink cursor\nblink_cursor() {\n    local duration=$1\n    local i=0\n    local iterations=$((duration * 2))\n    while [ $i -lt $iterations ]; do\n        if [ $((i % 2)) -eq 0 ]; then\n            render true\n        else\n            render false\n            printf \" \"\n        fi\n        sleep 0.5\n        i=$((i + 1))\n    done\n    render true\n}\n\n# Function to type out text\ntype_text() {\n    local text=\"$1\"\n    local delay=\"${2:-0.1}\"\n    local i=0\n    while [ $i -lt ${#text} ]; do\n        TYPED=\"${TYPED}${text:$i:1}\"\n        render true\n        sleep \"$delay\"\n        i=$((i + 1))\n    done\n}\n\n# Function to backspace text\nbackspace_text() {\n    local count=$1\n    local delay=\"${2:-0.05}\"\n    local i=0\n    while [ $i -lt $count ]; do\n        local len=${#TYPED}\n        if [ $len -gt 0 ]; then\n            TYPED=\"${TYPED:0:$((len - 1))}\"\n            render true\n            sleep \"$delay\"\n        fi\n        i=$((i + 1))\n    done\n}\n\n# Clear screen and start\nclear\n\n# Initial render with just prompt\nTYPED=\"\"\nrender true\n\nsleep 0.5\n\n# Type \"CODE .\"\ntype_text \"CODE .\" 0.1\n\n# Blink cursor for 3 seconds\nblink_cursor 3\n\n# Backspace \"CODE .\" (6 characters)\nbackspace_text 6 0.08\n\n# Type \"CLAUDE\"\ntype_text \"CLAUDE\" 0.1\n\nsleep 0.5\n\n# Backspace \"CLAUDE\" faster (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Gemini\"\ntype_text \"Gemini\" 0.1\n\nsleep 0.5\n\n# Backspace \"Gemini\" (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Codex\"\ntype_text \"Codex\" 0.1\n\nsleep 0.5\n\n# Backspace \"Codex\" (5 characters)\nbackspace_text 5 0.04\n\n# Type \"AMP\"\ntype_text \"AMP\" 0.1\n\n# Final pause\nsleep 2\n\necho\n"
}
The file ~/Code/faster-hype-term/typing-animation.sh has been updated. Here's the result of running `cat -n` on a snippet of the edited file:
     1→#!/bin/bash
     2→
     3→# Hide the real cursor
     4→tput civis
     5→
     6→# Restore cursor on exit
     7→trap 'tput cnorm' EXIT
     8→
     9→# ANSI color codes
    10→DARK_PURPLE="\033[38;5;54m"
    11→TEAL="\033[38;5;30m"
    12→RESET="\033[0m"
    13→CURSOR_BG="\033[48;5;55m"
    14→
    15→# Current typed text
    16→TYPED=""
    17→
    18→# Function to render the full line
    19→render() {
    20→    local show_cursor="${1:-true}"
    21→    # Move to beginning of line and clear it
    22→    printf "\r\033[K"
    23→    # Print prompt + typed text
    24→    printf "${DARK_PURPLE}faster.dev ${TEAL}main ${RESET}› %s" "$TYPED"
    25→    # Show cursor block if requested
    26→    if [ "$show_cursor" = "true" ]; then
    27→        printf "${CURSOR_BG} ${RESET}"
    28→    fi
    29→}
    30→
    31→# Function to blink cursor
    32→blink_cursor() {
    33→    local duration=$1
    34→    local i=0
    35→    local iterations=$((duration * 2))
    36→    while [ $i -lt $iterations ]; do
    37→        if [ $((i % 2)) -eq 0 ]; then
    38→            render true
    39→        else
    40→            render false
    41→            printf " "
    42→        fi
    43→        sleep 0.5
    44→        i=$((i + 1))
    45→    done
    46→    render true
    47→}
    48→
    49→# Function to type out text
    50→type_text() {
    51→    local text="$1"
    52→    local delay="${2:-0.1}"
    53→    local i=0
    54→    while [ $i -lt ${#text} ]; do
    55→        TYPED="${TYPED}${text:$i:1}"
    56→        render true
    57→        sleep "$delay"
    58→        i=$((i + 1))
    59→    done
    60→}
    61→
    62→# Function to backspace text
    63→backspace_text() {
    64→    local count=$1
    65→    local delay="${2:-0.05}"
    66→    local i=0
    67→    while [ $i -lt $count ]; do
    68→        local len=${#TYPED}
    69→        if [ $len -gt 0 ]; then
    70→            TYPED="${TYPED:0:$((len - 1))}"
    71→            render true
    72→            sleep "$delay"
    73→        fi
    74→        i=$((i + 1))
    75→    done
    76→}
    77→
    78→# Clear screen and start
    79→clear
    80→
    81→# Initial render with just prompt
    82→TYPED=""
    83→render true
    84→
    85→sleep 0.5
    86→
    87→# Type "CODE ."
    88→type_text "CODE ." 0.1
    89→
    90→# Blink cursor for 3 seconds
    91→blink_cursor 3
    92→
    93→# Backspace "CODE ." (6 characters)
    94→backspace_text 6 0.08
    95→
    96→# Type "CLAUDE"
    97→type_text "CLAUDE" 0.1
    98→
    99→sleep 0.5
   100→
   101→# Backspace "CLAUDE" faster (6 characters)
   102→backspace_text 6 0.04
   103→
   104→# Type "Gemini"
   105→type_text "Gemini" 0.1
   106→
   107→sleep 0.5
   108→
   109→# Backspace "Gemini" (6 characters)
   110→backspace_text 6 0.04
   111→
   112→# Type "Codex"
   113→type_text "Codex" 0.1
   114→
   115→sleep 0.5
   116→
   117→# Backspace "Codex" (5 characters)
   118→backspace_text 5 0.04
   119→
   120→# Type "AMP"
   121→type_text "AMP" 0.1
   122→
   123→# Final pause
   124→sleep 2
   125→
   126→echo
   127→
Thinking

Now let me run it to test.

$ ./typing-animation.sh 2>&1
[?25l
faster.dev main › 
faster.dev main › C
faster.dev main › CO
faster.dev main › COD
faster.dev main › CODE
faster.dev main › CODE 
faster.dev main › CODE .
faster.dev main › CODE .
faster.dev main › CODE . 
faster.dev main › CODE .
faster.dev main › CODE . 
faster.dev main › CODE .
faster.dev main › CODE . 
faster.dev main › CODE .
faster.dev main › CODE 
faster.dev main › CODE
faster.dev main › COD
faster.dev main › CO
faster.dev main › C
faster.dev main › 
faster.dev main › C
faster.dev main › CL
faster.dev main › CLA
faster.dev main › CLAU
faster.dev main › CLAUD
faster.dev main › CLAUDE
faster.dev main › CLAUD
faster.dev main › CLAU
faster.dev main › CLA
faster.dev main › CL
faster.dev main › C
faster.dev main › 
faster.dev main › G
faster.dev main › Ge
faster.dev main › Gem
faster.dev main › Gemi
faster.dev main › Gemin
faster.dev main › Gemini
faster.dev main › Gemin
faster.dev main › Gemi
faster.dev main › Gem
faster.dev main › Ge
faster.dev main › G
faster.dev main › 
faster.dev main › C
faster.dev main › Co
faster.dev main › Cod
faster.dev main › Code
faster.dev main › Codex
faster.dev main › Code
faster.dev main › Cod
faster.dev main › Co
faster.dev main › C
faster.dev main › 
faster.dev main › A
faster.dev main › AM
faster.dev main › AMP
[?12l[?25h
Thinking

The script is working now - no errors. The output shows all the escape codes but that's because it's captured as raw output. In a real terminal, it should render correctly.

The script is now working:

  1. Shows prompt
  2. Types "CODE ."
  3. Blinks cursor
  4. Backspaces
  5. Types "CLAUDE"
  6. Backspaces
  7. Types "Gemini"
  8. Backspaces
  9. Types "Codex"
  10. Backspaces
  11. Types "AMP"

The raw output in the function result shows all the escape sequences being sent, which is expected. The actual visual output in a terminal would look correct.

Let me let the user know it's working now.

Permalink

The script runs without errors now. The raw output shows the ANSI escape sequences being sent correctly - it types "CODE .", blinks, backspaces, then cycles through "CLAUDE", "Gemini", "Codex", and "AMP".

Try it in your terminal: ./typing-animation.sh

The fix was changing the substring syntax from ${TYPED:0:-1} to ${TYPED:0:$((len - 1))} which is more portable and doesn't error when the length calculation would be negative.

Permalink

Make them all lowercase.

Permalink
Thought 2 times. Used 1 tool call. +0 -0 [Expand]
Thinking

The user wants all the typed commands to be lowercase instead of uppercase/mixed case. So:

  • "CODE ." → "code ."
  • "CLAUDE" → "claude"
  • "Gemini" → "gemini"
  • "Codex" → "codex"
  • "AMP" → "amp"
Tool: Edit
Edit
{
  "replace_all": false,
  "file_path": "~/Code/faster-hype-term/typing-animation.sh",
  "old_string": "# Type \"CODE .\"\ntype_text \"CODE .\" 0.1\n\n# Blink cursor for 3 seconds\nblink_cursor 3\n\n# Backspace \"CODE .\" (6 characters)\nbackspace_text 6 0.08\n\n# Type \"CLAUDE\"\ntype_text \"CLAUDE\" 0.1\n\nsleep 0.5\n\n# Backspace \"CLAUDE\" faster (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Gemini\"\ntype_text \"Gemini\" 0.1\n\nsleep 0.5\n\n# Backspace \"Gemini\" (6 characters)\nbackspace_text 6 0.04\n\n# Type \"Codex\"\ntype_text \"Codex\" 0.1\n\nsleep 0.5\n\n# Backspace \"Codex\" (5 characters)\nbackspace_text 5 0.04\n\n# Type \"AMP\"\ntype_text \"AMP\" 0.1",
  "new_string": "# Type \"code .\"\ntype_text \"code .\" 0.1\n\n# Blink cursor for 3 seconds\nblink_cursor 3\n\n# Backspace \"code .\" (6 characters)\nbackspace_text 6 0.08\n\n# Type \"claude\"\ntype_text \"claude\" 0.1\n\nsleep 0.5\n\n# Backspace \"claude\" faster (6 characters)\nbackspace_text 6 0.04\n\n# Type \"gemini\"\ntype_text \"gemini\" 0.1\n\nsleep 0.5\n\n# Backspace \"gemini\" (6 characters)\nbackspace_text 6 0.04\n\n# Type \"codex\"\ntype_text \"codex\" 0.1\n\nsleep 0.5\n\n# Backspace \"codex\" (5 characters)\nbackspace_text 5 0.04\n\n# Type \"amp\"\ntype_text \"amp\" 0.1"
}
The file ~/Code/faster-hype-term/typing-animation.sh has been updated. Here's the result of running `cat -n` on a snippet of the edited file:
    83→render true
    84→
    85→sleep 0.5
    86→
    87→# Type "code ."
    88→type_text "code ." 0.1
    89→
    90→# Blink cursor for 3 seconds
    91→blink_cursor 3
    92→
    93→# Backspace "code ." (6 characters)
    94→backspace_text 6 0.08
    95→
    96→# Type "claude"
    97→type_text "claude" 0.1
    98→
    99→sleep 0.5
   100→
   101→# Backspace "claude" faster (6 characters)
   102→backspace_text 6 0.04
   103→
   104→# Type "gemini"
   105→type_text "gemini" 0.1
   106→
   107→sleep 0.5
   108→
   109→# Backspace "gemini" (6 characters)
   110→backspace_text 6 0.04
   111→
   112→# Type "codex"
   113→type_text "codex" 0.1
   114→
   115→sleep 0.5
   116→
   117→# Backspace "codex" (5 characters)
   118→backspace_text 5 0.04
   119→
   120→# Type "amp"
   121→type_text "amp" 0.1
   122→
   123→# Final pause
   124→sleep 2
   125→
Thinking

Done. All the text is now lowercase.

Permalink

Done. All commands are now lowercase: code ., claude, gemini, codex, amp.

Permalink

Make the word faster.dev bold and let's indent the whole thing by about eight spaces and about two lines so it has some padding around it.

Permalink
Thought 1 time. Used 0 tool calls. +0 -0 [Expand]
Thinking

The user wants:

  1. "faster.dev" to be bold
  2. The whole output indented by about 8 spaces
  3. About 2 lines of vertical padding (so empty lines before and after)

For bold, I'll use ANSI code \033[1m before the text and then reset.

For indentation, I'll add 8 spaces to the render function output.

For vertical padding, I'll add some newlines after clear and before the final echo.

Loading more...