Você precisará repetir a codificação de escape no início da linha que está perdendo sua formatação:
PS1="\[3[38;5;132m\]\n┌─■ testing\n\[3[38;5;132m\]└─■ \[$(tput sgr0)\]"
Como outras linhas podem ser afetadas da mesma forma, é melhor aplicar códigos de escape após cada nova linha. No entanto, você não precisa aplicá-las em uma linha vazia. Então, aqui está o que acabamos com:
PS1="\n\[3[38;5;132m\]┌─■ testing\n\[3[38;5;132m\]└─■ \[$(tput sgr0)\]"
Eu testei e tudo funciona para mim. (E eu tenho usado um prompt multi-line colorido como esse por um tempo sem problemas.)
Presumivelmente, o que está acontecendo aqui é que a linha de leitura está sobrescrevendo essa linha (redefinindo as cores) e, em seguida, redesenhando-a com apenas essa parte do valor PS1
. Como você não aplicou explicitamente as cores nessa linha, você terá a cor padrão (por exemplo, branco).