From fe598ba47a67a17f2dd03c5b1e727def4ca834f9 Mon Sep 17 00:00:00 2001 From: paul <423357+toothbrush@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:13:09 +0930 Subject: [PATCH 1/5] Slightly prettier login prompt. I found the "Press Enter to..." prompt got a bit lost and i always had to double-take. Tried to neaten it a tiny bit. --- cmd/entire/cli/login.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cmd/entire/cli/login.go b/cmd/entire/cli/login.go index 47cb8afac5..eb40c3f4ba 100644 --- a/cmd/entire/cli/login.go +++ b/cmd/entire/cli/login.go @@ -78,7 +78,8 @@ func runLogin(ctx context.Context, outW, errW io.Writer, client deviceAuthClient // so opening the URL is usually all the user needs to do. The device // code is printed above regardless, so it's still available to confirm // against the page (RFC 8628 ยง3.3.1) or to enter on the bare-URI fallback. - fmt.Fprintf(outW, "Press Enter to open %s in your browser to approve this login...", approvalURL) + fmt.Fprintf(outW, "Login URL: %s\n\n", approvalURL) + fmt.Fprintf(outW, "Press Enter to open in browser...") // Read from /dev/tty so we get a real keypress and don't consume piped stdin. if err := waitForEnter(ctx); err != nil { @@ -91,10 +92,10 @@ func runLogin(ctx context.Context, outW, errW io.Writer, client deviceAuthClient fmt.Fprintf(outW, "Open this URL in your browser to approve this login: %s\n", approvalURL) } } else { - fmt.Fprintf(outW, "Approval URL: %s\n", approvalURL) + fmt.Fprintf(outW, "Login URL: %s\n\n", approvalURL) } - fmt.Fprintln(outW, "Waiting for approval...") + fmt.Fprint(outW, "Waiting for approval... ") token, refreshToken, err := waitForApproval(ctx, client, start.DeviceCode, start.ExpiresIn, time.Duration(start.Interval)*time.Second, defaultSlowDownBackoff) if err != nil { @@ -123,7 +124,7 @@ func runLogin(ctx context.Context, outW, errW io.Writer, client deviceAuthClient fmt.Fprintf(errW, "Warning: logged in, but could not record a shareable context (clone via entire:// may need a re-login): %v\n", err) } - fmt.Fprintln(outW, "Login complete.") + fmt.Fprintln(outW, "โœ… login complete.") return nil } From 951fc851ed3048a1fd0af98da86c4cfe023312bd Mon Sep 17 00:00:00 2001 From: paul <423357+toothbrush@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:15:00 +0930 Subject: [PATCH 2/5] mise(dev:publish): Tell me what you did. I like seeing what has been installed. Makes me less nervous. --- mise-tasks/dev/publish | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mise-tasks/dev/publish b/mise-tasks/dev/publish index 2c4cf2d724..8ae041987b 100755 --- a/mise-tasks/dev/publish +++ b/mise-tasks/dev/publish @@ -6,4 +6,12 @@ set -eu export GOBIN=${GOPATH:-$HOME/go}/bin echo "NOTE: we're overriding \$GOBIN: $GOBIN" 1>&2 -go install ./cmd/entire ./cmd/git-remote-entire +commands=( + entire + git-remote-entire +) + +for c in "${commands[@]}"; do + go install "./cmd/$c" + echo "Installed: '$c'" 1>&2 +done From 7fdfa6befd663090f0bfc69fceaf3f4043ecf3ea Mon Sep 17 00:00:00 2001 From: paul <423357+toothbrush@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:34:51 +0930 Subject: [PATCH 3/5] Fix login integration tests for new output wording. Match the renamed "Login URL:" prefix and lowercase "login complete." strings from the cosmetic login output tweak. Co-Authored-By: Claude Opus 4.8 (1M context) Entire-Checkpoint: bb20852cb016 --- cmd/entire/cli/integration_test/login_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/entire/cli/integration_test/login_test.go b/cmd/entire/cli/integration_test/login_test.go index 5063c5443a..e6f00e4070 100644 --- a/cmd/entire/cli/integration_test/login_test.go +++ b/cmd/entire/cli/integration_test/login_test.go @@ -96,7 +96,7 @@ func TestLogin_SavesTokenAfterApproval(t *testing.T) { t.Fatalf("output missing wait message:\n%s", output) } - if !strings.Contains(output, "Login complete.") { + if !strings.Contains(output, "login complete.") { t.Fatalf("output missing login complete message (token save likely failed):\n%s", output) } @@ -142,7 +142,7 @@ func TestLogin_ExpiredFlow(t *testing.T) { t.Fatalf("expected expired message, got:\n%s", output) } - if strings.Contains(output, "Login complete.") { + if strings.Contains(output, "login complete.") { t.Fatal("output should NOT contain login complete for expired flow") } } @@ -181,7 +181,7 @@ func TestLogin_DeniedFlow(t *testing.T) { t.Fatalf("expected denied message, got:\n%s", output) } - if strings.Contains(output, "Login complete.") { + if strings.Contains(output, "login complete.") { t.Fatal("output should NOT contain login complete for denied flow") } } @@ -255,8 +255,8 @@ func waitForLoginPrompt(t *testing.T, stdout *bufio.Reader) (string, string) { switch { case strings.HasPrefix(line, "Device code: "): deviceCode = strings.TrimPrefix(line, "Device code: ") - case strings.HasPrefix(line, "Approval URL: "): - approvalURL = strings.TrimPrefix(line, "Approval URL: ") + case strings.HasPrefix(line, "Login URL:"): + approvalURL = strings.TrimSpace(strings.TrimPrefix(line, "Login URL:")) } if approvalURL != "" && deviceCode != "" { From 682b09907d6466fb48597e00b6424c62427ec5f4 Mon Sep 17 00:00:00 2001 From: paul <423357+toothbrush@users.noreply.github.com> Date: Wed, 3 Jun 2026 21:45:49 +0930 Subject: [PATCH 4/5] consistent styling. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- cmd/entire/cli/login.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/entire/cli/login.go b/cmd/entire/cli/login.go index eb40c3f4ba..e6d799986e 100644 --- a/cmd/entire/cli/login.go +++ b/cmd/entire/cli/login.go @@ -124,7 +124,7 @@ func runLogin(ctx context.Context, outW, errW io.Writer, client deviceAuthClient fmt.Fprintf(errW, "Warning: logged in, but could not record a shareable context (clone via entire:// may need a re-login): %v\n", err) } - fmt.Fprintln(outW, "โœ… login complete.") + fmt.Fprintln(outW, "โœ“ Login complete.") return nil } From 917843abdd54e302aae0b82c5fbd7a87e15221eb Mon Sep 17 00:00:00 2001 From: paul <423357+toothbrush@users.noreply.github.com> Date: Thu, 4 Jun 2026 09:05:07 +0930 Subject: [PATCH 5/5] Update login integration tests for 'Login complete.' wording. Co-Authored-By: Claude Opus 4.8 (1M context) Entire-Checkpoint: f8442932682e --- cmd/entire/cli/integration_test/login_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/entire/cli/integration_test/login_test.go b/cmd/entire/cli/integration_test/login_test.go index e6f00e4070..a6afd2c714 100644 --- a/cmd/entire/cli/integration_test/login_test.go +++ b/cmd/entire/cli/integration_test/login_test.go @@ -96,7 +96,7 @@ func TestLogin_SavesTokenAfterApproval(t *testing.T) { t.Fatalf("output missing wait message:\n%s", output) } - if !strings.Contains(output, "login complete.") { + if !strings.Contains(output, "Login complete.") { t.Fatalf("output missing login complete message (token save likely failed):\n%s", output) } @@ -142,7 +142,7 @@ func TestLogin_ExpiredFlow(t *testing.T) { t.Fatalf("expected expired message, got:\n%s", output) } - if strings.Contains(output, "login complete.") { + if strings.Contains(output, "Login complete.") { t.Fatal("output should NOT contain login complete for expired flow") } } @@ -181,7 +181,7 @@ func TestLogin_DeniedFlow(t *testing.T) { t.Fatalf("expected denied message, got:\n%s", output) } - if strings.Contains(output, "login complete.") { + if strings.Contains(output, "Login complete.") { t.Fatal("output should NOT contain login complete for denied flow") } }