From 47842720ea46804d485946e1c60c4a5e28348c4b Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Wed, 2 Jul 2025 13:42:43 -0300 Subject: [PATCH 1/3] feat: add Arch Linux package support to nfpms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable archlinux format in nfpms configuration to generate Arch Linux packages alongside existing deb and rpm packages. 💖 Generated with Crush Co-Authored-By: Crush --- .goreleaser.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.goreleaser.yml b/.goreleaser.yml index da360bd1cc1ed15a0e1fa1f3e483f166d90c9e70..44b91504964a8650ba47a2311c2dc98368e9ffe4 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -115,6 +115,7 @@ nfpms: - formats: - deb - rpm + - archlinux file_name_template: "{{ .ConventionalFileName }}" contents: - src: ./completions/crush.bash From b9f9519f5036fc546c534667735f869086074f19 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Wed, 2 Jul 2025 12:36:11 -0400 Subject: [PATCH 2/3] chore(gitignore): ignore all .crush directories no matter where they are --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fa60789d7653799d43289eabf2e4d82bb7ae28a1..ff6f6265b947a990e3bfa256d4cf6a9dc0447150 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,7 @@ Thumbs.db .env .env.local -.crush/ +**/.crush/** crush From 816fad86637c5edbd3be6cd7076a7045a6f844bf Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Wed, 2 Jul 2025 14:54:39 -0400 Subject: [PATCH 3/3] feat: alternate S character for logo --- internal/tui/components/logo/logo.go | 46 +++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/internal/tui/components/logo/logo.go b/internal/tui/components/logo/logo.go index 9d170ee6c2a0036ad9e4ca8b11c1a373fbb15080..7a063f79b7c8a9fd34507c1762b1c98842be5ac4 100644 --- a/internal/tui/components/logo/logo.go +++ b/internal/tui/components/logo/logo.go @@ -1,3 +1,4 @@ +// Package logo renders a Crush wordmark in a stylized way. package logo import ( @@ -42,7 +43,14 @@ func Render(version string, compact bool, o Opts) string { } // Title. - crush := renderWord(1, !compact, letterC, letterR, letterU, letterS, letterH) + const spacing = 1 + crush := renderWord(spacing, !compact, + letterC, + letterR, + letterU, + letterSStylized, + letterH, + ) crushWidth := lipgloss.Width(crush) b := new(strings.Builder) for r := range strings.SplitSeq(crush, "\n") { @@ -252,6 +260,42 @@ func letterS(stretch bool) string { ) } +// letterSStylized renders the letter S in a stylized way, more so than +// [letterS]. It takes an integer that determines how many cells to stretch the +// letter. If the stretch is less than 1, it defaults to no stretching. +func letterSStylized(stretch bool) string { + // Here's what we're making: + // + // ▄▀▀▀▀▀ + // ▀▀▀▀▀█ + // ▀▀▀▀▀ + + left := heredoc.Doc(` + ▄ + ▀ + ▀ + `) + center := heredoc.Doc(` + ▀ + ▀ + ▀ + `) + right := heredoc.Doc(` + ▀ + █ + `) + return joinLetterform( + left, + stretchLetterformPart(center, letterformProps{ + stretch: stretch, + width: 3, + minStretch: 7, + maxStretch: 12, + }), + right, + ) +} + // letterU renders the letter U in a stylized way. It takes an integer that // determines how many cells to stretch the letter. If the stretch is less than // 1, it defaults to no stretching.