You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add ASCII banner and CEO welcome message for new signups (#80)
* Add braille art banner to fizzy, setup, and signup commands
Show the README's braille art banner in interactive terminal sessions:
- bare `fizzy` command (before help output)
- `fizzy setup` (before the setup wizard)
- `fizzy signup` (before the signup wizard)
The banner is printed to stderr and only displays when connected to a
TTY, so it never appears in piped, --json, --agent, or --quiet output.
* Add CEO welcome message for new user signups
Show a personal welcome message from Jason Fried after new users
complete signup. Includes braille signature art in interactive mode
and a welcome_message field in JSON output for programmatic/agent use.
Agent skill updated to require displaying the message.
* Fix gosec lint: use blank identifier for cmd.Help() error
* Print banner to stdout and include signature in machine welcome message
Address Copilot review: use stdout for banner to match other interactive
output, and include the signature in machine output welcome_message for
consistency with interactive output.
* Preserve existing profile fields in ensureProfile
Read the existing profile before creating/replacing so that Extra
entries (like board) and non-default BaseURL values survive calls
that pass empty values for those fields (auth login, migrateLegacyToken).
* Consolidate authLogoutAll into a single loop
Eliminate the second profiles.List() call by deleting credentials and
profiles in the same iteration over the collected names.
* Use t.TempDir() instead of os.MkdirTemp in signup tests
Removes manual cleanup and lets the test framework handle temp
directory lifecycle.
* Remove DNS resolution from validateSignupURL to fix TOCTOU
Only allow literal loopback addresses (localhost, 127.0.0.1, ::1)
for http:// URLs. DNS lookups at validation time can return different
results than at connection time, creating a TOCTOU race.
* Apply target profile's board when switching profiles
Read the board from the target profile's Extra instead of
unconditionally clearing it, so profile-specific boards survive
auth switch.
* Print banner to stderr to avoid mixing with command output
* Use actual CLI version in signup User-Agent header
* Warn when FIZZY_ACCOUNT env var is used instead of FIZZY_PROFILE
* Check stderr TTY status to match banner output destination
* Cache profileEnvVar() result to avoid duplicate deprecation warning
* Fix ensureProfile preserving stale BaseURL on hosted re-signup
Only preserve existing BaseURL when the caller passes empty string
(meaning "I don't care"). Passing config.DefaultAPIURL now correctly
overwrites a previously-saved self-hosted URL.
* Guard banner on machine flags and stderr TTY, not IsMachineOutput
IsMachineOutput checks stdout, but the banner writes to stderr.
Check machine format flags directly and gate on stderr TTY state
so the banner shows when stderr is a terminal regardless of stdout
piping, and is suppressed when stderr itself is redirected.
* Rewrite welcome message copy for CLI context
Replace GUI-specific language ("You'll see the Playground when you
close this message") with CLI-appropriate direction ("Try fizzy board
list to see it").
* Fix ensureProfile doc comment to match implementation
* Soften welcome message to not assert Playground board exists
Use "You should find a Playground board" instead of asserting it
was set up, since the CLI can't verify server-side board provisioning.
* Emit FIZZY_ACCOUNT deprecation warning on no-profiles path
The early return at resolveProfile:670-678 read FIZZY_ACCOUNT
directly, bypassing profileEnvVar() and its deprecation warning.
Route through profileEnvVar() so the warning fires consistently.
* Add tests for ensureProfile BaseURL overwrite and preservation
Cover the hosted re-signup case (default URL overwrites self-hosted)
and the empty-string case (existing BaseURL is preserved).
* Clear stale board from profile when setup user selects "None"
ensureProfile preserves existing Extra entries when board is empty
(to avoid clobbering boards during auth login/signup). Setup is the
only caller where empty board means "user explicitly chose no board,"
so handle the clearing there directly.
---------
Co-authored-by: Jeremy Daer <jeremy@37signals.com>
0 commit comments