Skip to content

feat: Polylane voice cleanup across CLI output - #30

Merged
boristane merged 2 commits into
mainfrom
claude/persona-direction-a
Aug 13, 2026
Merged

feat: Polylane voice cleanup across CLI output#30
boristane merged 2 commits into
mainfrom
claude/persona-direction-a

Conversation

@claude

@claude claude Bot commented Aug 13, 2026

Copy link
Copy Markdown

Requested by boris, Justin Helmer · Slack thread

Applies the persona work to the CLI's human-facing strings, scoped per boris's review: no first-person "I" voice; keep the neutral copy improvements. Errors lead with what to do next, success stays quietly pleased, no em dashes, no "failed"/"Unknown error" headlines, per the house copy rules. Machine-readable output (JSON shapes, exit codes, flags, command and option names) is untouched.

Design artifact (voice principles): https://claude.ai/code/artifact/191a9b0b-d30a-4ac7-93d3-d82c7e2ad98e

Before / After

Help banner (fixes the em-dash violation of the house copy rules)

  • Before: polylane — CLI for the Polylane platform
  • After: polylane: investigate production issues from your terminal

Unknown command (straight from the approved design mock)

  • Before: Error: Unknown command: polylane scna
  • After: Error: Unknown command: polylane scna. Closest match: polylane scan.

Auth error

  • Before: Error: API key validation failed (403)
  • After: Error: The API key was not accepted (403) + Hint: Check the key, or create a new one in the console

Scan failure line (no "failed" headline, no em dash)

  • Before: Scan failed for prod (timeout) and Nothing to scan — no cloud accounts or integrations are connected.
  • After: The prod scan didn't finish (timeout). and Nothing to scan yet: no cloud accounts or integrations are connected.

Cancel confirmations (matches the product's Slack copy)

  • Before: Cancelled
  • After: Cancelled. Nothing changed.

Update check

  • Before: Up to date
  • After: You're up to date.

Not in scope (reverted after review): any string where the CLI speaks as "I". Third-person "Polylane " prose (scan navigator notes, autofix watch, connect flows) keeps main's wording.

How

  • Swept the user-facing surfaces: root/group/command help, status lines, spinners, success confirmations, error messages and hints, the browser sign-in pages, setup/scan/connect flows, thread ask/continue, update checks, and cancel confirmations.
  • Removed every em dash from string literals; replaced "failed"/"Unknown error"/"Not authenticated" phrasing with plain next-step wording (Sign-in did not complete, Couldn't refresh your session, Not signed in., The request did not succeed).
  • Added a small Levenshtein-based suggestCommand in src/registry.ts to power the closest-match line shown in the approved mock; ERRORS.md updated to match.
  • Updated the tests that asserted on changed strings and added coverage for the suggestion helper.

Verification

  • npm run typecheck clean
  • npm run lint clean
  • npm run test 186/186 pass
  • Manual smoke test: polylane --help shows the new banner; polylane scna prints the mock's exact error and hint.

claude added 2 commits August 13, 2026 21:35
Apply the approved Direction A persona to every human-facing string:
the CLI speaks as "I" (calm senior SRE register), errors lead with
what to do next, success stays quietly pleased, and no em dashes per
the house copy rules. Unknown commands now suggest the closest match
("Unknown command: polylane scna. Closest match: polylane scan."),
straight from the approved design mock.

Machine-readable output (JSON shapes, exit codes, flags, command and
option names) is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RpvmDmwuwen1nmgCQbvD4n
Per review on #30: revert every string where the CLI speaks as "I"
back to main's wording or a neutral equivalent, while keeping the
closest-match suggestions, "Not signed in.", "Cancelled. Nothing
changed.", em-dash fixes, no-"failed" phrasing, and next-step hints.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RpvmDmwuwen1nmgCQbvD4n
@claude claude Bot changed the title feat: first-person Polylane voice across CLI output feat: Polylane voice cleanup across CLI output Aug 13, 2026
@boristane
boristane merged commit 4f6bf40 into main Aug 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants