Skip to content

feat(cli): render invited players with profile URLs in recruit delivery#164

Merged
Sootopolis merged 1 commit into
mainfrom
wip
Jul 14, 2026
Merged

feat(cli): render invited players with profile URLs in recruit delivery#164
Sootopolis merged 1 commit into
mainfrom
wip

Conversation

@Sootopolis

Copy link
Copy Markdown
Owner

What

ccas recruit --report and the interactive confirm previously emitted only bare usernames — no way to vet a player before inviting. They now render the same review block the recruitment out file uses:

alice bob charlie

alice https://www.chess.com/member/alice
bob https://www.chess.com/member/bob
charlie https://www.chess.com/member/charlie

— a space-separated username line (paste-ready for invites) then one <username> <profile-url> line per player — and copy that block to the clipboard, not just the usernames.

Single source so the three renderings can't drift:
ApiPlayer.getProfileUrl → profileLine → profileReviewBlock, used by the out-file formatter, --report, and the confirm delivery. Also removed a divergent hand-rolled rendering in showReport (logged bare URLs on their own lines); it's now pure data-fetch and the report app echoes the shared formatter line-by-line.

Fixes

  • --report / confirm copied only usernames and showed no profile URLs for manual inspection.
  • showReport console output diverged from the out file (bare URLs vs username url).

Testing

  • Full sbt test green (pre-push hook).
  • 214 CLI + recruitment tests pass; behaviour reviewed for the confirm/report/--stdout paths.

Notes

  • CLI-only — no server or schema change, no redeploy. Rebuild the ccas binary.
  • --stdout piping mode stays a bare newline list.

🤖 Generated with Claude Code

`ccas recruit --report` and the interactive confirm previously emitted
only bare usernames, giving no way to vet a player before inviting. They
now render the same review block the recruitment out file uses — a
space-separated username line (paste-ready for invites) followed by one
`<username> <profile-url>` line per player — and copy that block to the
clipboard, not just the usernames.

Everything routes through a single source so the three renderings can't
drift: ApiPlayer.getProfileUrl -> profileLine -> profileReviewBlock, used
by the out-file formatter, `--report`, and the confirm delivery. This also
removes a divergent hand-rolled rendering in showReport (it logged bare
URLs on their own lines) — showReport is now pure data-fetch and the
report app echoes the shared formatter's output line-by-line.

CLI-only; no server or schema change.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Sootopolis
Sootopolis merged commit a44bb25 into main Jul 14, 2026
1 check 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.

1 participant