Release 2.5.0 - #375
Open
callinmullaney wants to merge 7 commits into
Open
Release 2.5.0#375callinmullaney wants to merge 7 commits into
callinmullaney wants to merge 7 commits into
Conversation
Output was produced by five unrelated renderers, each with its own symbols, colour logic and idea of what a line looks like. Every command now opens a session, threads each step onto one gutter, and closes with a summary or a cancellation. Adds lib/session.ts as the single renderer and rewrites log.ts on top of it, keeping the log(method, message) signature so call sites are unchanged. Prompts return a cancel sentinel rather than throwing, so runPrompt unwraps it into a PromptCancelledError and cancellation is handled in one place. Diagnostics move to stderr through a stream that removes escape sequences when stderr is redirected, so `emulsify init 2> log.txt` writes plain text while stdout stays a terminal. Piped and redirected output is read by scripts, so it gets plain lines with no gutter, symbols or colour, and spinners report phases as lines instead of animating. Commander failures are rendered through the same session and now suggest the closest command, replacing bare `error: unknown command 'x'`. The version is a value scripts read, so it prints as one plain line instead of a drawn box. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
The progress bar was hardcoded to 100 cells. With a 44-character status message it rendered 117 characters on an 80-column terminal, wrapped, and redrew to column 1 of the wrapped line, so every tick left the previous one stranded above it. Its five ticks also spent half their travel on a fraction of the work: the 40-tick covered `npm install`, so the bar sat at 50% through the longest wait and then jumped to 90%. A spinner now names the phase it is in, which is the part a person can act on, and it only starts once every value is validated and the target is reserved, so no earlier failure can leave it spinning. Failures stop it before the error is reported. A successful init also ended in a yellow WARN badge, because the Drupal setup instructions were returned with method 'warn'. They are guidance on a run that worked, so they are now blocks on the success path, and the closing summary names the project that was created. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
`component list` printed one line per component with nothing on it but the structure and the name. For Compound that is 29 near-identical lines, while the system config already records which components are required and what each one depends on, so installing `accordion` quietly brings five more with it. The list is now grouped by structure, counts the required components in each group, and names the dependencies a component brings with it. `system list` aligns its repositories into a column. Both render as one block rather than a run of loose lines, and both close with a summary that says what to run next. `cache clear` reports its outcome the same way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
Questions were drawn by one library and results by another, so a command visibly changed voice between asking and reporting. Every prompt in the CLI now comes from the same renderer as its output. Each handler returns the outcome it actually reached instead of printing a final line, so the session closes on the truth: a declined overwrite in `component create` no longer reports a component as created, and `system install` names the component set that landed. Multi-line output that was packed into single log lines is now rendered as blocks: installed dependencies, ejected template paths, dry-run previews and the system install review. `system install`'s wizard header drops its 60-column padding, which assumed a bare line and collided with the gutter. Select and multi-select options carry a hint, so component lists show their structure and eject types explain what they write. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
The four libraries that produced the CLI's competing output styles are no longer imported anywhere. @clack/prompts replaces all four, and the `dim` used for debug output comes from colorette, which the CLI already depends on, rather than adding a second colour library. Runtime dependencies drop from ten to seven. The e2e expectations follow the message changes from the commits above. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
Computed by `npm run version:develop` from the unreleased history: a minor release from v2.4.1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
The packed install smoke test still expected the boxed "Version: x.y.z" format. It now asserts the plain line the CLI prints. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utf5UMza9HgyUvKHWjYmpY
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.
Pull Request
Summary
Related Issue
Verification
npm run buildnpm run typenpm testnpm run pack:dry-runnpm run smoke:packChecklist
it.