Skip to content

feat(course-setup): add CLI ping step controlled by feature flag#3571

Merged
rohitpaulk merged 1 commit into
mainfrom
feat-cli-ping-step-feature-flag
Jan 6, 2026
Merged

feat(course-setup): add CLI ping step controlled by feature flag#3571
rohitpaulk merged 1 commit into
mainfrom
feat-cli-ping-step-feature-flag

Conversation

@rohitpaulk
Copy link
Copy Markdown
Member

@rohitpaulk rohitpaulk commented Jan 6, 2026

Introduce a new "Test CLI connection" setup step that replaces the
previous "Push empty commit" step when the canViewCLIPingFlow
feature flag is enabled. Update related UI text and instructions to
reflect this new flow, including the addition of a reusable command
component for running CLI connection tests.

This change enables a smoother onboarding experience for users with
access to experimental CLI ping functionality, controlled via a
feature flag to allow gradual rollout without impacting existing users.


Note

Enables an alternative CLI-driven onboarding flow when can-view-cli-ping-flow is active.

  • Adds featureFlags.canViewCLIPingFlow and routes setup/test runner UX accordingly
  • Setup step list switches push-empty-committest-cli-connection (new component) under flag; adds Troubleshooting modal and links to clone/push/test steps
  • First-stage task card shows Run tests (CLI) vs Git push instructions conditionally; submit step supports codecrafters test
  • Progress indicator text changes to Listening for ping... / Ping received. when flagged
  • Workflow tutorial step 2 content and animation updated for CLI flow; pre-caches new GIF
  • Step list assigns owner to steps to access feature flags in progress text
  • Test updates: enable flag in scenarios, assert new copy/commands; page objects adjusted

Written by Cursor Bugbot for commit d3c2ded. This will update automatically on new commits. Configure here.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jan 6, 2026

Test Results

  1 files  ±0    1 suites  ±0   6m 40s ⏱️ -3s
680 tests  - 6  619 ✅  - 7  55 💤 ±0  0 ❌ ±0  6 🔥 +1 
695 runs   - 6  628 ✅  - 8  55 💤 ±0  6 ❌ +1  6 🔥 +1 

For more details on these errors, see this check.

Results for commit d3c2ded. ± Comparison against base commit 6efff22.

This pull request removes 7 and adds 1 tests. Note that renamed tests count towards both.
Chrome 142.0 ‑ Acceptance | header-test: campus badge redirects to /settings/billing
Chrome 142.0 ‑ Acceptance | header-test: header should show campus badge if user has an institution membership grant
Chrome 142.0 ‑ Acceptance | header-test: header should show custom leaderboard link if user has feature flag enabled
Chrome 142.0 ‑ Acceptance | header-test: header should show generic leaderboard link if user has feature flag enabled and leaderboard entries
Chrome 142.0 ‑ Acceptance | header-test: header should show member badge if user has an active subscription
Chrome 142.0 ‑ Acceptance | header-test: header should show upgrade button if user does not have an active subscription
Chrome 142.0 ‑ Acceptance | header-test: member badge redirects to /settings/billing
Chrome ‑ error

♻️ This comment has been updated with latest results.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 6, 2026

❌ 6 Tests Failed:

Tests completed Failed Passed Skipped
625 6 619 55
View the top 3 failed test(s) by shortest run time
Chrome 142.0::Acceptance | concepts-test: can use Delete and Backspace keys in the feedback popup
Stack Traces | 0.339s run time
Promise rejected during "can use Delete and Backspace keys in the feedback popup": Element not found.

PageObject: 'page.questionCards[0].focusedOption'
  Selector: '[data-test-question-card]:eq(0) [data-test-question-card-option]:focus'

PageObject: 'page.questionCards[0].focusedOption.click()'
  Selector: '[data-test-question-card]:eq(0) [data-test-question-card-option]:focus'
Chrome 142.0::Acceptance | concepts-test: can navigate using arrow keys and select option using enter
Stack Traces | 0.38s run time
Promise rejected during "can navigate using arrow keys and select option using enter": Element not found.

PageObject: 'page.questionCards[0].focusedOption.text'
  Selector: '[data-test-question-card]:eq(0) [data-test-question-card-option]:focus'
Chrome 142.0::Acceptance | concepts-test: can navigate using j/k and select option using enter
Stack Traces | 0.407s run time
Promise rejected during "can navigate using j/k and select option using enter": Element not found.

PageObject: 'page.questionCards[0].focusedOption.text'
  Selector: '[data-test-question-card]:eq(0) [data-test-question-card-option]:focus'
Chrome 142.0::Acceptance | concepts-test: navigating options wraps around the list for the current question card only
Stack Traces | 0.741s run time
Promise rejected during "navigating options wraps around the list for the current question card only": Element not found.

PageObject: 'page.questionCards[1].focusedOption.text'
  Selector: '[data-test-question-card]:eq(1) [data-test-question-card-option]:focus'
Chrome 142.0::Acceptance | concepts-test: while navigating using keys, options are traversed one at a time
Stack Traces | 1.14s run time
Promise rejected during "while navigating using keys, options are traversed one at a time": Element not found.

PageObject: 'page.questionCards[2].focusedOption.text'
  Selector: '[data-test-question-card]:eq(2) [data-test-question-card-option]:focus'
View the full list of 1 ❄️ flaky test(s)
Chrome::error

Flake rate in main: 100.00% (Passed 0 times, Failed 19 times)

Stack Traces | 0s run time
Error: Browser timeout exceeded: 10s
Error while executing test: Acceptance | header-test: header should show generic leaderboard link if user has feature flag enabled and leaderboard entries
Stderr: 
 [3325:3682:0106/171210.706360:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3682:0106/171216.053106:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")

DevTools listening on ws://127.0.0.1:.../devtools/browser/7cf69635-1064-45ef-80e0-d73683635277
[3325:3682:0106/171217.214743:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171217.942769:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3682:0106/171217.943241:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3682:0106/171217.943252:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3682:0106/171217.943255:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3682:0106/171217.943259:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3682:0106/171217.943261:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3682:0106/171217.943263:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171217.946501:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3325:0106/171217.956273:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3682:0106/171217.956392:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171217.999870:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3325:0106/171217.999884:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3325:0106/171217.999930:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3682:0106/171218.000655:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171218.032862:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3682:0106/171218.032918:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171218.037577:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.Properties.GetAll: object_path= .../UPower/devices/DisplayDevice: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
[3325:3325:0106/171218.037862:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3325:0106/171218.040025:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3682:0106/171218.040061:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171218.080859:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3325:3682:0106/171218.080907:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3325:3325:0106/171218.135884:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= ................................./org/freedesktop/DBus: unknown error type: 
[3860:3860:0106/171225.603170:ERROR:.../command_buffer/service/gles2_cmd_decoder_passthrough.cc:1091] [GroupMarkerNotSet(crbug.com/242999)!:A0601800E4090000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[3860:3860:0106/171225.823455:ERROR:.../command_buffer/service/gles2_cmd_decoder_passthrough.cc:1091] [GroupMarkerNotSet(crbug.com/242999)!:A0901800E4090000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[3325:3713:0106/171230.090269:ERROR:.../gcm/engine/registration_request.cc:292] Registration response error message: PHONE_REGISTRATION_ERROR
[3325:3713:0106/171230.108012:ERROR:.../gcm/engine/mcs_client.cc:700]   Error code: 401  Error message: Authentication Failed: wrong_secret
[3325:3713:0106/171230.108157:ERROR:.../gcm/engine/mcs_client.cc:702] Failed to log in to GCM, resetting connection.
Created TensorFlow Lite XNNPACK delegate for CPU.

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 6, 2026

Bundle Report

Changes will decrease total bundle size by 230.44kB (-0.59%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
client-array-push 38.93MB -230.44kB (-0.59%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: client-array-push

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/chunk.*.js -480 bytes 3.36MB -0.01%
assets/chunk.*.js -576 bytes 181.26kB -0.32%
assets/chunk.*.js -576 bytes 638.49kB -0.09%
assets/chunk.*.js -576 bytes 183.96kB -0.31%
assets/chunk.*.js 6.09kB 409.48kB 1.51%
assets/chunk.*.js -576 bytes 622.58kB -0.09%
assets/chunk.*.js -575 bytes 189.99kB -0.3%
assets/chunk.*.js -576 bytes 101.56kB -0.56%
assets/chunk.*.js -576 bytes 113.95kB -0.5%
assets/chunk.*.js -576 bytes 112.98kB -0.51%
assets/chunk.*.js -576 bytes 86.79kB -0.66%
assets/chunk.*.js -576 bytes 780.04kB -0.07%
assets/chunk.*.js -576 bytes 172.26kB -0.33%
assets/chunk.*.js -576 bytes 18.81kB -2.97%
assets/chunk.*.js -576 bytes 3.42kB -14.4%
assets/chunk.*.js -577 bytes 95.9kB -0.6%
assets/chunk.*.js -576 bytes 21.25kB -2.64%
assets/chunk.*.js -576 bytes 10.67kB -5.12%
assets/chunk.*.js -576 bytes 3.31kB -14.82%
assets/chunk.*.js -576 bytes 7.45kB -7.18%
assets/chunk.*.js -576 bytes 3.0kB -16.09%
assets/chunk.*.js -576 bytes 11.9kB -4.62%
assets/chunk.*.js -576 bytes 97.75kB -0.59%
assets/chunk.*.js -576 bytes 4.24kB -11.95%
assets/chunk.*.js -576 bytes 3.8kB -13.16%
assets/chunk.*.js -576 bytes 10.56kB -5.17%
assets/chunk.*.js -576 bytes 20.63kB -2.72%
assets/chunk.*.js -576 bytes 6.6kB -8.03%
assets/chunk.*.js -576 bytes 968 bytes -37.31%
assets/chunk.*.js -576 bytes 14.77kB -3.75%
assets/chunk.*.js -576 bytes 9.15kB -5.92%
assets/chunk.*.js -576 bytes 1.19kB -32.67%
assets/chunk.*.js -576 bytes 72.34kB -0.79%
assets/chunk.*.js -576 bytes 11.01kB -4.97%
assets/chunk.*.js -576 bytes 1.99kB -22.48%
assets/chunk.*.js -576 bytes 39.27kB -1.45%
assets/chunk.*.js -576 bytes 1.99kB -22.48%
assets/chunk.*.js -576 bytes 82.02kB -0.7%
assets/chunk.*.js -576 bytes 24.2kB -2.32%
assets/chunk.*.js -576 bytes 6.71kB -7.91%
assets/chunk.*.js -576 bytes 3.55kB -13.96%
assets/chunk.*.js -576 bytes 11.6kB -4.73%
assets/chunk.*.js -576 bytes 3.01kB -16.06%
assets/chunk.*.js -576 bytes 2.53kB -18.52%
assets/chunk.*.js -576 bytes 31.11kB -1.82%
assets/chunk.*.js -576 bytes 13.94kB -3.97%
assets/chunk.*.js -576 bytes 5.96kB -8.82%
assets/chunk.*.js -576 bytes 3.06kB -15.85%
assets/chunk.*.js -576 bytes 27.07kB -2.08%
assets/chunk.*.js -576 bytes 23.59kB -2.38%
assets/chunk.*.js -576 bytes 3.81kB -13.12%
assets/chunk.*.js -576 bytes 1.61kB -26.35%
assets/chunk.*.js -576 bytes 87.92kB -0.65%
assets/chunk.*.js -576 bytes 14.61kB -3.79%
assets/chunk.*.js -576 bytes 13.86kB -3.99%
assets/chunk.*.js -576 bytes 2.15kB -21.16%
assets/chunk.*.js -576 bytes 57.51kB -0.99%
assets/chunk.*.js -576 bytes 3.9kB -12.86%
assets/chunk.*.js -576 bytes 175.01kB -0.33%
assets/chunk.*.js -576 bytes 19.37kB -2.89%
assets/chunk.*.js -576 bytes 8.0kB -6.72%
assets/chunk.*.js -576 bytes 22.82kB -2.46%
assets/chunk.*.js -576 bytes 8.97kB -6.03%
assets/chunk.*.js -576 bytes 4.17kB -12.14%
assets/chunk.*.js -576 bytes 11.62kB -4.72%
assets/chunk.*.js -576 bytes 2.76kB -17.26%
assets/chunk.*.js -576 bytes 2.75kB -17.33%
assets/chunk.*.js -576 bytes 14.22kB -3.89%
assets/chunk.*.js -576 bytes 5.83kB -9.0%
assets/chunk.*.js -576 bytes 13.07kB -4.22%
assets/chunk.*.js -576 bytes 2.71kB -17.51%
assets/chunk.*.js -576 bytes 8.38kB -6.43%
assets/chunk.*.js -576 bytes 4.1kB -12.32%
assets/chunk.*.js -576 bytes 20.19kB -2.77%
assets/chunk.*.js -576 bytes 105.65kB -0.54%
assets/chunk.*.js -575 bytes 18.12kB -3.08%
assets/chunk.*.js -576 bytes 1.05kB -35.32%
assets/chunk.*.js -576 bytes 14.61kB -3.79%
assets/chunk.*.js -576 bytes 6.51kB -8.12%
assets/chunk.*.js -576 bytes 515 bytes -52.8%
assets/chunk.*.js -576 bytes 18.81kB -2.97%
assets/chunk.*.js -576 bytes 7.1kB -7.51%
assets/chunk.*.js -576 bytes 44.98kB -1.26%
assets/chunk.*.js -576 bytes 23.86kB -2.36%
assets/chunk.*.js -576 bytes 2.99kB -16.15%
assets/chunk.*.js -576 bytes 50.12kB -1.14%
assets/chunk.*.js -576 bytes 18.81kB -2.97%
assets/chunk.*.js -576 bytes 973 bytes -37.19%
assets/chunk.*.js -576 bytes 48.27kB -1.18%
assets/chunk.*.js -576 bytes 13.99kB -3.95%
assets/chunk.*.js -576 bytes 7.03kB -7.58%
assets/chunk.*.js -576 bytes 3.62kB -13.73%
assets/chunk.*.js -576 bytes 21.93kB -2.56%
assets/chunk.*.js -576 bytes 3.29kB -14.88%
assets/chunk.*.js -576 bytes 873 bytes -39.75%
assets/chunk.*.js -576 bytes 9.15kB -5.92%
assets/chunk.*.js -576 bytes 3.54kB -13.98%
assets/chunk.*.js -576 bytes 2.7kB -17.57%
assets/chunk.*.js -576 bytes 21.93kB -2.56%
assets/chunk.*.js -576 bytes 2.75kB -17.3%
assets/chunk.*.js -576 bytes 8.14kB -6.61%
assets/chunk.*.js -576 bytes 4.61kB -11.11%
assets/chunk.*.js -576 bytes 20.97kB -2.67%
assets/chunk.*.js -576 bytes 43.98kB -1.29%
assets/chunk.*.js -576 bytes 24.39kB -2.31%
assets/chunk.*.js -576 bytes 6.28kB -8.4%
assets/chunk.*.js -576 bytes 3.2kB -15.27%
assets/chunk.*.js -576 bytes 74.99kB -0.76%
assets/chunk.*.js -576 bytes 7.95kB -6.76%
assets/chunk.*.js -576 bytes 21.02kB -2.67%
assets/chunk.*.js -576 bytes 1.17kB -32.91%
assets/chunk.*.js -576 bytes 12.27kB -4.48%
assets/chunk.*.js -576 bytes 4.73kB -10.85%
assets/chunk.*.js -576 bytes 2.25kB -20.4%
assets/chunk.*.js -576 bytes 23.3kB -2.41%
assets/chunk.*.js -573 bytes 71.58kB -0.79%
assets/chunk.*.js -576 bytes 5.65kB -9.26%
assets/chunk.*.js -576 bytes 47.44kB -1.2%
assets/chunk.*.js -576 bytes 19.87kB -2.82%
assets/chunk.*.js -576 bytes 14.78kB -3.75%
assets/chunk.*.js -576 bytes 3.09kB -15.73%
assets/chunk.*.js -576 bytes 4.13kB -12.24%
assets/chunk.*.js -576 bytes 69.61kB -0.82%
assets/chunk.*.js -576 bytes 35.6kB -1.59%
assets/chunk.*.js -576 bytes 16.26kB -3.42%
assets/chunk.*.js -576 bytes 47.44kB -1.2%
assets/chunk.*.js -576 bytes 13.4kB -4.12%
assets/chunk.*.js -576 bytes 6.57kB -8.06%
assets/chunk.*.js -576 bytes 5.07kB -10.21%
assets/chunk.*.js -576 bytes 1.35kB -29.97%
assets/chunk.*.js -576 bytes 35.84kB -1.58%
assets/chunk.*.js -576 bytes 5.57kB -9.37%
assets/chunk.*.js -576 bytes 9.28kB -5.85%
assets/chunk.*.js -576 bytes 2.43kB -19.19%
assets/chunk.*.js -576 bytes 21.06kB -2.66%
assets/chunk.*.js -576 bytes 10.37kB -5.26%
assets/chunk.*.js -576 bytes 38.77kB -1.46%
assets/chunk.*.js -576 bytes 9.86kB -5.52%
assets/chunk.*.js -576 bytes 1.94kB -22.91%
assets/chunk.*.js -576 bytes 21.06kB -2.66%
assets/chunk.*.js -576 bytes 1.33kB -30.25%
assets/chunk.*.js -576 bytes 175.72kB -0.33%
assets/chunk.*.js -576 bytes 62.73kB -0.91%
assets/chunk.*.js -576 bytes 15.73kB -3.53%
assets/chunk.*.js -575 bytes 11.69kB -4.69%
assets/chunk.*.js -576 bytes 48.68kB -1.17%
assets/chunk.*.js -576 bytes 9.48kB -5.73%
assets/chunk.*.js -576 bytes 4.71kB -10.89%
assets/chunk.*.js -576 bytes 16.41kB -3.39%
assets/chunk.*.js -576 bytes 2.79kB -17.13%
assets/chunk.*.js -589 bytes 230.96kB -0.25%
assets/chunk.*.js -576 bytes 18.81kB -2.97%
assets/chunk.*.js -576 bytes 8.68kB -6.22%
assets/chunk.*.js -576 bytes 4.95kB -10.42%
assets/chunk.*.js -576 bytes 1.83kB -23.91%
assets/chunk.*.js -576 bytes 14.34kB -3.86%
assets/chunk.*.js -576 bytes 6.78kB -7.83%
assets/chunk.*.js -576 bytes 3.89kB -12.91%
assets/chunk.*.js -576 bytes 29.5kB -1.92%
assets/chunk.*.js -576 bytes 9.27kB -5.85%
assets/chunk.*.js -576 bytes 5.51kB -9.47%
assets/chunk.*.js -576 bytes 14.03kB -3.94%
assets/chunk.*.js -576 bytes 4.6kB -11.12%
assets/chunk.*.js -576 bytes 3.99kB -12.61%
assets/chunk.*.js -576 bytes 20.34kB -2.75%
assets/chunk.*.js -576 bytes 4.4kB -11.57%
assets/chunk.*.js -576 bytes 17.3kB -3.22%
assets/chunk.*.js -576 bytes 2.35kB -19.69%
assets/chunk.*.js -576 bytes 136.3kB -0.42%
assets/chunk.*.js -576 bytes 12.15kB -4.52%
assets/chunk.*.js -576 bytes 3.47kB -14.23%
assets/chunk.*.js -576 bytes 33.67kB -1.68%
assets/chunk.*.js -576 bytes 5.53kB -9.43%
assets/chunk.*.js -576 bytes 10.66kB -5.13%
assets/chunk.*.js -576 bytes 5.53kB -9.43%
assets/chunk.*.js -576 bytes 6.38kB -8.28%
assets/chunk.*.js -576 bytes 6.12kB -8.61%
assets/chunk.*.js -576 bytes 1.26kB -31.36%
assets/chunk.*.js -576 bytes 11.57kB -4.74%
assets/chunk.*.js -576 bytes 5.55kB -9.4%
assets/chunk.*.js -576 bytes 131.7kB -0.44%
assets/chunk.*.js -576 bytes 16.74kB -3.33%
assets/chunk.*.js -576 bytes 27.6kB -2.04%
assets/chunk.*.js -576 bytes 5.16kB -10.04%
assets/chunk.*.js -576 bytes 6.76kB -7.85%
assets/chunk.*.js -576 bytes 6.47kB -8.17%
assets/chunk.*.js -591 bytes 333.62kB -0.18%
assets/chunk.*.js -576 bytes 47.43kB -1.2%
assets/chunk.*.js -576 bytes 10.04kB -5.43%
assets/chunk.*.js -576 bytes 32.29kB -1.75%
assets/chunk.*.js -576 bytes 3.79kB -13.19%
assets/chunk.*.js -576 bytes 20.95kB -2.68%
assets/chunk.*.js -576 bytes 3.55kB -13.95%
assets/chunk.*.js -576 bytes 22.82kB -2.46%
assets/chunk.*.js -576 bytes 9.3kB -5.83%
assets/chunk.*.js -576 bytes 4.33kB -11.74%
assets/chunk.*.js -576 bytes 29.76kB -1.9%
assets/chunk.*.js -576 bytes 9.84kB -5.53%
assets/chunk.*.js -576 bytes 4.34kB -11.72%
assets/chunk.*.js -576 bytes 58.88kB -0.97%
assets/chunk.*.js -576 bytes 17.3kB -3.22%
assets/chunk.*.js -576 bytes 16.46kB -3.38%
assets/chunk.*.js -576 bytes 5.31kB -9.79%
assets/chunk.*.js -576 bytes 2.83kB -16.89%
assets/chunk.*.js -576 bytes 31.01kB -1.82%
assets/chunk.*.js -576 bytes 12.64kB -4.36%
assets/chunk.*.js -576 bytes 6.51kB -8.13%
assets/chunk.*.js -576 bytes 33.4kB -1.7%
assets/chunk.*.js -576 bytes 6.55kB -8.08%
assets/chunk.*.js -576 bytes 3.04kB -15.93%
assets/chunk.*.js -576 bytes 1.6kB -26.51%
assets/chunk.*.js -576 bytes 8.06kB -6.67%
assets/chunk.*.js -576 bytes 3.11kB -15.62%
assets/chunk.*.js -576 bytes 55.99kB -1.02%
assets/chunk.*.js -575 bytes 12.78kB -4.31%
assets/chunk.*.js -576 bytes 50.88kB -1.12%
assets/chunk.*.js -576 bytes 3.77kB -13.26%
assets/chunk.*.js -576 bytes 24.21kB -2.32%
assets/chunk.*.js -576 bytes 5.72kB -9.15%
assets/chunk.*.js -576 bytes 6.44kB -8.21%
assets/chunk.*.js -576 bytes 53.92kB -1.06%
assets/chunk.*.js -576 bytes 23.12kB -2.43%
assets/chunk.*.js -576 bytes 5.37kB -9.68%
assets/chunk.*.js -576 bytes 3.79kB -13.18%
assets/chunk.*.js -576 bytes 29.09kB -1.94%
assets/chunk.*.js -576 bytes 25.97kB -2.17%
assets/chunk.*.js -576 bytes 2.02kB -22.21%
assets/chunk.*.js -576 bytes 22.82kB -2.46%
assets/chunk.*.js -576 bytes 8.7kB -6.21%
assets/chunk.*.js -444 bytes 41.03kB -1.07%
assets/chunk.*.js -576 bytes 6.14kB -8.57%
assets/chunk.*.js -576 bytes 1.24kB -31.72%
assets/chunk.*.js -576 bytes 25.48kB -2.21%
assets/chunk.*.js -576 bytes 2.53kB -18.56%
assets/chunk.*.js -576 bytes 2.52kB -18.62%
assets/chunk.*.js -576 bytes 97.83kB -0.59%
assets/chunk.*.js -576 bytes 2.73kB -17.42%
assets/chunk.*.js -576 bytes 11.36kB -4.82%
assets/chunk.*.js -576 bytes 878 bytes -39.61%
assets/chunk.*.js -576 bytes 87.38kB -0.65%
assets/chunk.*.js -576 bytes 27.03kB -2.09%
assets/chunk.*.js -576 bytes 21.65kB -2.59%
assets/chunk.*.js -576 bytes 2.08kB -21.71%
assets/chunk.*.js -576 bytes 40.99kB -1.39%
assets/chunk.*.js -576 bytes 12.87kB -4.28%
assets/chunk.*.js -576 bytes 3.28kB -14.94%
assets/chunk.*.js -576 bytes 9.24kB -5.87%
assets/chunk.*.js -576 bytes 25.56kB -2.2%
assets/chunk.*.js -576 bytes 1.88kB -23.5%
assets/chunk.*.js -576 bytes 26.39kB -2.14%
assets/chunk.*.js -576 bytes 10.12kB -5.39%
assets/chunk.*.js -576 bytes 3.51kB -14.09%
assets/chunk.*.js -576 bytes 57.17kB -1.0%
assets/chunk.*.js -576 bytes 5.04kB -10.25%
assets/chunk.*.js -575 bytes 85.16kB -0.67%
assets/chunk.*.js -576 bytes 17.52kB -3.18%
assets/chunk.*.js -576 bytes 6.09kB -8.64%
assets/chunk.*.js -576 bytes 22.77kB -2.47%
assets/chunk.*.js -576 bytes 6.95kB -7.66%
assets/chunk.*.js -576 bytes 3.3kB -14.85%
assets/chunk.*.js -576 bytes 2.21kB -20.68%
assets/chunk.*.js -576 bytes 14.81kB -3.74%
assets/chunk.*.js -576 bytes 14.24kB -3.89%
assets/chunk.*.js -576 bytes 6.66kB -7.96%
assets/chunk.*.js -576 bytes 5.33kB -9.75%
assets/chunk.*.js -576 bytes 37.7kB -1.5%
assets/chunk.*.js -576 bytes 8.17kB -6.58%
assets/chunk.*.js -576 bytes 1.71kB -25.17%
assets/chunk.*.js -576 bytes 924 bytes -38.4%
assets/chunk.*.js -576 bytes 8.42kB -6.4%
assets/chunk.*.js -577 bytes 7.36kB -7.27%
assets/chunk.*.js -576 bytes 2.87kB -16.72%
assets/chunk.*.js -576 bytes 2.29kB -20.09%
assets/chunk.*.js -576 bytes 11.58kB -4.74%
assets/chunk.*.js -576 bytes 1.15kB -33.37%
assets/chunk.*.js -576 bytes 5.22kB -9.93%
assets/chunk.*.js -576 bytes 13.38kB -4.13%
assets/chunk.*.js -576 bytes 6.6kB -8.02%
assets/chunk.*.js -576 bytes 2.54kB -18.46%
assets/chunk.*.js -576 bytes 31.57kB -1.79%
assets/chunk.*.js -576 bytes 25.48kB -2.21%
assets/chunk.*.js -576 bytes 4.08kB -12.37%
assets/chunk.*.js -576 bytes 56.19kB -1.01%
assets/chunk.*.js -576 bytes 3.81kB -13.14%
assets/chunk.*.js -576 bytes 37.06kB -1.53%
assets/chunk.*.js -576 bytes 6.55kB -8.08%
assets/chunk.*.js -576 bytes 21.92kB -2.56%
assets/chunk.*.js -576 bytes 8.57kB -6.3%
assets/chunk.*.js -576 bytes 27.72kB -2.04%
assets/chunk.*.js -576 bytes 6.95kB -7.66%
assets/chunk.*.js -576 bytes 4.89kB -10.54%
assets/chunk.*.js -576 bytes 2.2kB -20.77%
assets/chunk.*.js -576 bytes 31.26kB -1.81%
assets/chunk.*.js -576 bytes 9.73kB -5.59%
assets/chunk.*.js -576 bytes 2.44kB -19.09%
assets/chunk.*.js -576 bytes 32.39kB -1.75%
assets/chunk.*.js -576 bytes 5.59kB -9.34%
assets/chunk.*.js -576 bytes 1.03kB -35.91%
assets/chunk.*.js -759 bytes 40.9kB -1.82%
assets/chunk.*.js -576 bytes 28.71kB -1.97%
assets/chunk.*.js -576 bytes 196.62kB -0.29%
assets/chunk.*.js -576 bytes 25.66kB -2.2%
assets/chunk.*.js -576 bytes 9.47kB -5.73%
assets/chunk.*.js -576 bytes 4.86kB -10.6%
assets/chunk.*.js -576 bytes 6.13kB -8.59%
assets/chunk.*.js -576 bytes 1.59kB -26.64%
assets/chunk.*.js -576 bytes 14.97kB -3.7%
assets/chunk.*.js -576 bytes 3.44kB -14.33%
assets/chunk.*.js -576 bytes 24.99kB -2.25%
assets/chunk.*.js -576 bytes 3.73kB -13.38%
assets/chunk.*.js -576 bytes 6.94kB -7.66%
assets/chunk.*.js -576 bytes 18.16kB -3.07%
assets/chunk.*.js -576 bytes 7.66kB -6.99%
assets/chunk.*.js -576 bytes 4.37kB -11.66%
assets/chunk.*.js -576 bytes 769 bytes -42.83%
assets/chunk.*.js -576 bytes 30.78kB -1.84%
assets/chunk.*.js -576 bytes 7.1kB -7.5%
assets/chunk.*.js -576 bytes 2.48kB -18.84%
assets/chunk.*.js -576 bytes 732 bytes -44.04%
assets/chunk.*.js -576 bytes 24.95kB -2.26%
assets/chunk.*.js -576 bytes 5.33kB -9.75%
assets/chunk.*.js -576 bytes 29.07kB -1.94%
assets/chunk.*.js -576 bytes 24.56kB -2.29%
assets/chunk.*.js -576 bytes 7.15kB -7.46%
assets/chunk.*.js -576 bytes 3.81kB -13.13%
assets/chunk.*.js -576 bytes 1.93kB -23.01%
assets/chunk.*.js -576 bytes 47.17kB -1.21%
assets/chunk.*.js -576 bytes 13.22kB -4.17%
assets/chunk.*.js -576 bytes 4.98kB -10.37%
assets/chunk.*.js -576 bytes 22.37kB -2.51%
assets/chunk.*.js -576 bytes 2.19kB -20.86%
assets/chunk.*.js -576 bytes 41.82kB -1.36%
assets/chunk.*.js -576 bytes 46.96kB -1.21%
assets/chunk.*.js -576 bytes 7.5kB -7.14%
assets/chunk.*.js -576 bytes 3.86kB -12.99%
assets/chunk.*.js -576 bytes 22.82kB -2.46%
assets/chunk.*.js -576 bytes 5.31kB -9.79%
assets/chunk.*.js -576 bytes 1.01kB -36.23%
assets/chunk.*.js -576 bytes 59.53kB -0.96%
assets/chunk.*.js -576 bytes 49.22kB -1.16%
assets/chunk.*.js -576 bytes 15.35kB -3.62%
assets/chunk.*.js -576 bytes 4.8kB -10.72%
assets/chunk.*.js -576 bytes 16.04kB -3.47%
assets/chunk.*.js -576 bytes 6.63kB -8.0%
assets/chunk.*.js -576 bytes 19.18kB -2.92%
assets/chunk.*.js -576 bytes 47.43kB -1.2%
assets/chunk.*.js -576 bytes 27.39kB -2.06%
assets/chunk.*.js -575 bytes 10.22kB -5.33%
assets/chunk.*.js -576 bytes 3.2kB -15.27%
assets/chunk.*.js -576 bytes 24.46kB -2.3%
assets/chunk.*.js -576 bytes 7.94kB -6.76%
assets/chunk.*.js -576 bytes 2.25kB -20.37%
assets/chunk.*.js -576 bytes 4.61kB -11.1%
assets/chunk.*.js -576 bytes 53.93kB -1.06%
assets/chunk.*.js -576 bytes 17.31kB -3.22%
assets/chunk.*.js -576 bytes 15.39kB -3.61%
assets/chunk.*.js -576 bytes 10.24kB -5.33%
assets/chunk.*.js -576 bytes 4.17kB -12.13%
assets/chunk.*.js -576 bytes 92.58kB -0.62%
assets/chunk.*.js -576 bytes 22.81kB -2.46%
assets/chunk.*.js -576 bytes 10.7kB -5.11%
assets/chunk.*.js -576 bytes 16.46kB -3.38%
assets/chunk.*.js -576 bytes 2.11kB -21.48%
assets/chunk.*.js -578 bytes 305.18kB -0.19%
assets/chunk.*.js -576 bytes 20.55kB -2.73%
assets/chunk.*.js -576 bytes 3.51kB -14.09%
assets/chunk.*.js -576 bytes 22.81kB -2.46%
assets/chunk.*.js -576 bytes 15.13kB -3.67%
assets/chunk.*.js -576 bytes 22.82kB -2.46%
assets/chunk.*.js -576 bytes 262.58kB -0.22%
assets/chunk.*.js -576 bytes 4.05kB -12.44%
assets/chunk.*.js -576 bytes 71.02kB -0.8%
assets/chunk.*.js -576 bytes 16.3kB -3.41%
assets/chunk.*.js -576 bytes 3.44kB -14.34%
assets/chunk.*.js -576 bytes 41.66kB -1.36%
assets/chunk.*.js -576 bytes 15.26kB -3.64%
assets/chunk.*.js -576 bytes 4.2kB -12.07%
assets/chunk.*.js -576 bytes 2.75kB -17.3%
assets/chunk.*.js -576 bytes 11.68kB -4.7%
assets/chunk.*.js -576 bytes 3.01kB -16.07%
assets/chunk.*.js -576 bytes 14.46kB -3.83%
assets/chunk.*.js -576 bytes 70.29kB -0.81%
assets/chunk.*.js -576 bytes 6.03kB -8.72%
assets/chunk.*.js -578 bytes 65.13kB -0.88%
assets/chunk.*.js -576 bytes 21.25kB -2.64%
assets/chunk.*.js -576 bytes 5.57kB -9.37%
assets/chunk.*.js -576 bytes 1.1kB -34.27%
assets/chunk.*.js -576 bytes 14.45kB -3.83%
assets/chunk.*.js -576 bytes 9.61kB -5.65%
assets/chunk.*.js -576 bytes 4.3kB -11.81%
assets/chunk.*.js -576 bytes 2.34kB -19.74%
assets/chunk.*.js -576 bytes 13.79kB -4.01%
assets/chunk.*.js -576 bytes 11.55kB -4.75%
assets/chunk.*.js -576 bytes 3.37kB -14.6%
assets/chunk.*.js -576 bytes 80.37kB -0.71%
assets/chunk.*.js -576 bytes 4.3kB -11.82%
assets/chunk.*.js -576 bytes 177.98kB -0.32%
assets/chunk.*.js -576 bytes 35.35kB -1.6%
assets/chunk.*.js -576 bytes 33.97kB -1.67%
assets/chunk.*.js -576 bytes 4.95kB -10.43%
assets/chunk.*.js -576 bytes 20.19kB -2.77%
assets/chunk.*.js -576 bytes 13.84kB -4.0%
assets/chunk.*.js -576 bytes 26.9kB -2.1%
assets/chunk.*.js -576 bytes 37.1kB -1.53%
assets/chunk.*.js -576 bytes 9.53kB -5.7%
assets/chunk.*.js -576 bytes 10.56kB -5.17%
assets/chunk.*.js -576 bytes 18.79kB -2.97%
assets/chunk.*.js -576 bytes 3.56kB -13.94%
assets/chunk.*.js -576 bytes 31.07kB -1.82%
assets/chunk.*.js -576 bytes 27.41kB -2.06%
assets/chunk.*.js -576 bytes 12.2kB -4.51%
assets/chunk.*.js -576 bytes 8.06kB -6.67%
assets/chunk.*.css 189 bytes 276.16kB 0.07%

Files in assets/chunk.*.js:

  • ./services/feature-flags.ts → Total Size: 2.07kB

  • ./utils/course-page-step-list.ts → Total Size: 6.24kB

  • ./utils/course-page-step-list/setup-step.ts → Total Size: 2.6kB

Files in assets/chunk.*.css:

  • ./utils/course-page-step-list/setup-step.ts → Total Size: 2.6kB

  • ./services/feature-flags.ts → Total Size: 2.07kB

  • ./utils/course-page-step-list.ts → Total Size: 6.24kB

Comment thread app/utils/course-page-step-list/setup-step.ts

{{! TODO: Change troubleshooting link }}
<span class="text-blue-500 text-xs underline font-medium">
<a href="#" {{on "click" (fn (mut this.isCommitModalOpen) true)}}>Troubleshoot</a>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

CLI troubleshoot link opens git commit modal

When canViewCLIPingFlow is enabled, the Troubleshoot link opens isCommitModalOpen, which displays git commit troubleshooting instructions (like running git commit -am "[any message]" and resolving "nothing to commit" issues). This is incorrect for users running codecrafters test since the modal content is completely irrelevant to CLI troubleshooting. Users will see confusing git instructions when they need help with the CLI command.

Fix in Cursor Fix in Web

Comment thread tests/acceptance/course-page/start-course-test.js
@rohitpaulk rohitpaulk force-pushed the feat-cli-ping-step-feature-flag branch from e5b52b6 to c73ca46 Compare January 6, 2026 17:09
Introduce a new "Test CLI connection" setup step that replaces the
previous "Push empty commit" step when the `canViewCLIPingFlow`
feature flag is enabled. Update related UI text and instructions to
reflect this new flow, including the addition of a reusable command
component for running CLI connection tests.

This change enables a smoother onboarding experience for users with
access to experimental CLI ping functionality, controlled via a
feature flag to allow gradual rollout without impacting existing users.
@rohitpaulk rohitpaulk force-pushed the feat-cli-ping-step-feature-flag branch from c73ca46 to d3c2ded Compare January 6, 2026 17:10
@rohitpaulk rohitpaulk merged commit 7c22b87 into main Jan 6, 2026
7 of 8 checks passed
@rohitpaulk rohitpaulk deleted the feat-cli-ping-step-feature-flag branch January 6, 2026 17:32
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