Skip to content

fix(npm): render lifecycle logs through progress - #11939

Merged
jdx merged 5 commits into
mainfrom
codex/fix-npm-lifecycle-progress
Aug 13, 2026
Merged

jdx merged 5 commits into
mainfrom
codex/fix-npm-lifecycle-progress

Conversation

@jdx

@jdx jdx commented Aug 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • recognize lifecycle output events emitted by embedded aube
  • print lifecycle lines through mise’s SingleReport, so clx safely redraws concurrent progress jobs
  • keep non-lifecycle informational events at debug level and preserve warning/error handling

Dependency

  • updates the embedded aube workspace crates to 1.40.0, which captures lifecycle stdout/stderr and tags those InstallEvent::Output events
  • this replaces the previous approach that paused the global progress renderer for the entire lifecycle phase

Tests

  • cargo check --locked
  • cargo test --locked --bin mise aube
  • cargo test --locked --bin mise task::workspace::node::tests
  • mise run test:e2e e2e/backend/test_npm_aube

AI-assisted — Tool: Codex; model: unavailable/unavailable; version: unavailable.

Summary by CodeRabbit

  • Bug Fixes

    • Lifecycle-script output is now displayed through the installation progress reporting experience.
    • Informational lifecycle messages that do not require user attention remain out of the primary progress display, reducing unnecessary noise.
    • Installation progress now presents relevant lifecycle events more consistently while lifecycle scripts run.
  • Tests

    • Added coverage to verify relevant lifecycle output is shown and unrelated informational messages remain hidden.

Note

Low Risk
Scoped to npm embedded-aube install UX and a dependency bump; no changes to auth, locking, or install resolution logic.

Overview
Bumps embedded aube workspace crates from 1.39.0 to 1.40.0, which tag lifecycle script stdout/stderr as InstallEvent::Output with code AUBE_LIFECYCLE_SCRIPT_OUTPUT.

In apply_aube_event, those info events are printed via SingleReport::println so mise’s progress layer (clx) can redraw safely alongside active install jobs. Other informational aube output stays at debug; warnings and errors are unchanged.

Adds unit/integration tests that assert lifecycle lines reach the progress report and that non-lifecycle info is not printed.

Reviewed by Cursor Bugbot for commit 1bcf9de. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: f67696b9-8a1d-49dc-ae48-e115a0f75375

📥 Commits

Reviewing files that changed from the base of the PR and between d3ad5f0 and 1bcf9de.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • src/backend/npm.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/backend/npm.rs

📝 Walkthrough

Walkthrough

apply_aube_event now sends AUBE_LIFECYCLE_SCRIPT_OUTPUT events through mise’s progress reporter. Other informational, warning, and error events keep their existing handling. Unit and integration tests verify the behavior.

Changes

Aube lifecycle output

Layer / File(s) Summary
Lifecycle output forwarding and validation
src/backend/npm.rs
apply_aube_event sends lifecycle-script output to SingleReport::println. A recording report test double, unit test, and embedded-aube integration test verify the forwarded output.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score: ⚪ Minimal · up to 1bcf9

This change narrowly improves npm lifecycle log rendering while preserving existing warning and error handling; no actionable merge-blocking risk remains beyond normal checks and review.

Possibly related PRs

Poem

A rabbit sees the scripts stream,
Their output joins the progress gleam.
Other events keep their track,
Tests confirm the messages back.
Hop, hop—the flow is clear.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: rendering npm lifecycle logs through the progress reporter.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Instruction counts

benchmark trend instructions Δ wall (min) Δ
env ▄▅▁█▄▆▇▇▆▇▇▇▆▅▄▄▄ 80,671,597 → 80,671,478 -0.00% 18.10 → 18.05ms -0.27%
hook-env ▁▁▁▄▁▃▄▃▃▂▄▃▄▂▁▂█ 82,150,220 → 82,323,425 +0.21% 19.50 → 20.57ms +5.49%
ls ▇▇▆█▇▇▇▃▃▃▃▃▂▂▂▂▁ 73,242,539 → 73,202,259 -0.05% 16.67 → 17.18ms +3.07%
registry ███████▁▁▁▁▁▁▁▁▁▁ 43,150,440 → 43,161,602 +0.03% 11.73 → 11.93ms +1.69%
startup ▁▁▁▄▁▄▅▆█▇█▆█▃▂▃▂ 15,553,882 → 15,540,717 -0.08% 9.05 → 10.35ms +14.35%

No instruction-count regression above 1%.

Only instruction counts gate. Wall clock is shown for context — on identical hardware it moves 4-20% run to run.

Measured by tak — instruction-counted CLI benchmarks, stored in this repository's git notes.

d3ad5f0044e1 vs 5c625afba01b · measured on the runner, not pushed to the history.

@greptile-apps

greptile-apps Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR updates the embedded aube workspace crates to 1.40.0 and routes tagged lifecycle-script output through the active progress report.

  • Recognizes AUBE_LIFECYCLE_SCRIPT_OUTPUT informational events and prints them through SingleReport.
  • Keeps other informational events at debug level and preserves warning/error handling.
  • Adds focused routing and embedded-install coverage for lifecycle output.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
src/backend/npm.rs Routes aube lifecycle output through progress-safe reporting and adds unit and integration coverage without an eligible follow-up defect.
Cargo.lock Updates the coordinated embedded aube workspace crates from 1.39.0 to 1.40.0.

Fix All in Greploop

Reviews (7): Last reviewed commit: "test(npm): tolerate shell output whitesp..." | Re-trigger Greptile

Comment thread src/backend/npm.rs Outdated
@jdx
jdx force-pushed the codex/fix-npm-lifecycle-progress branch from 19a80c1 to a6a5424 Compare August 12, 2026 21:01
@jdx jdx changed the title fix(npm): pause progress during lifecycle scripts fix(npm): render lifecycle logs through progress Aug 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/backend/npm.rs (1)

2638-2653: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Cover the negative side of the event-code filter.

The test verifies only AUBE_LIFECYCLE_SCRIPT_OUTPUT. Add cases for informational events with no code and with a different code. Assert that RecordingReport remains empty. This protects the existing debug-only path from a future broad match.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/backend/npm.rs` around lines 2638 - 2653, Extend
test_aube_lifecycle_output_prints_through_progress_report with informational
InstallEvent::Output cases using None and a different code, and assert
RecordingReport remains empty for each. Keep the existing
AUBE_LIFECYCLE_SCRIPT_OUTPUT assertion unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/backend/npm.rs`:
- Around line 2638-2653: Extend
test_aube_lifecycle_output_prints_through_progress_report with informational
InstallEvent::Output cases using None and a different code, and assert
RecordingReport remains empty for each. Keep the existing
AUBE_LIFECYCLE_SCRIPT_OUTPUT assertion unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 526ae473-163a-45ef-aaf3-ea3cf3c7982e

📥 Commits

Reviewing files that changed from the base of the PR and between 19a80c1 and a6a5424.

📒 Files selected for processing (1)
  • src/backend/npm.rs

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d3ad5f0. Configure here.

Comment thread src/backend/npm.rs
@jdx
jdx force-pushed the codex/fix-npm-lifecycle-progress branch from 5b6c63d to ecba04a Compare August 13, 2026 16:28
@socket-security

socket-security Bot commented Aug 13, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedcargo/​aube@​1.39.0 ⏵ 1.40.066100100100100

View full report

@jdx
jdx enabled auto-merge (squash) August 13, 2026 16:30
@jdx
jdx merged commit 563353e into main Aug 13, 2026
29 of 30 checks passed
@jdx
jdx deleted the codex/fix-npm-lifecycle-progress branch August 13, 2026 17:29
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