feat(install): style install.sh to match lipgloss CLI aesthetic#20
Merged
Conversation
Pure-ANSI hand-roll (no gum, no external dep) so the curl|sh
first-touch experience visually matches the rememberize CLI binary
the user is about to run for the first time. Same rounded borders,
same dim color-8 accents, same subdued green/red status glyphs as
the lipgloss tables in cmd/rememberize/render.go.
Why not gum: it's a separate binary, so requiring it would mean
"install gum to install rememberize" — exactly the kind of friction
that defeats a one-line installer. Hand-rolled ANSI ships zero deps
on top of the curl/wget/tar/unzip the script already needs.
Output styling:
╭──────────────────────────────╮
│ Installing rememberize CLI │
╰──────────────────────────────╯
✓ Detected darwin/arm64
› Resolving latest release...
✓ Version v0.1.0
› Downloading rememberize_0.1.0_darwin_arm64.tar.gz
✓ Downloaded
✓ Extracted
✓ Installed to /Users/brad/.local/bin/rememberize
Next steps
Verify the install:
rememberize --version
Pair this machine to your rememberize account:
rememberize pair <code>
(get a code from https://rememberize.app/app/connections/new)
Opt-outs (any one suffices):
- stderr is not a TTY (piped to file, captured by CI, etc.)
- $NO_COLOR is non-empty (https://no-color.org POSIX standard)
- $TERM is "dumb"
In any of those cases, the script falls back to ASCII glyphs and
no colors — same content, just plain. Shellcheck-clean POSIX sh
throughout (no bashisms).
Logic untouched: same OS/arch detection, same release-resolution,
same download/extract/install flow, same PATH warning, same exit
codes. This is purely a presentation upgrade.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
74a07c9 to
33e3891
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Pure-ANSI hand-roll of `install.sh` so the `curl | sh` first-touch experience visually matches the rememberize CLI binary the user is about to run for the first time. Same rounded borders, same dim color-8 accents, same subdued green/red status glyphs as the lipgloss tables in `cmd/rememberize/render.go`.
Why not gum
Charmbracelet does ship `gum`, which exposes Bubble Tea / lipgloss components for shell scripts. But it's a separate binary — using it in install.sh would mean "install gum to install rememberize," exactly the kind of friction that defeats a one-line installer. Hand-rolled ANSI ships zero new deps on top of the `curl`/`wget`/`tar`/`unzip` the script already needs.
What it looks like
```
╭──────────────────────────────╮
│ Installing rememberize CLI │
╰──────────────────────────────╯
```
Opt-outs (any one suffices)
In any of those cases the script falls back to ASCII glyphs (`[ok]`, `+--+`, `>`) and no colors — same content, just plain. The TTY check was confirmed locally — when run through a non-TTY stderr, output is the ASCII variant verbatim.
What's unchanged
Verification
Test plan
Follow-ups (out of scope)
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmithwith what you need.