feat(vscode): improve stop button feedback in Pipeline Observability screen#549
Conversation
…screen Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe change adds special handling for a "stopping" task state in the control button logic, displaying a disabled "Stopping..." button, paired with distinct orange CSS styling. This provides visual feedback during pipeline shutdown. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
The PageStatus changes belong in a separate PR (rocketride-org#549) and were accidentally included here.
…ation PR The PageStatus changes belong in a separate PR (rocketride-org#549) and were accidentally included here.
The PageStatus changes belong in a separate PR (rocketride-org#549) and were accidentally included here.
* feat(vscode): improve stop button feedback in Pipeline Observability screen Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(nodes): improve Milvus vector DB node — address all TODOs - Add configurable timeout (default 60s) replacing hardcoded timeout=20, read from node config via 'timeout' key (TODO line 101, 483) - Add connection error handling with meaningful failure messages instead of raw pymilvus exceptions propagating - Implement bulk insert with configurable batch size (default 50) for addChunks(), replacing one-at-a-time upserts (TODO lines 449, 464) - Add _batchUpsertResults() helper to batch-update markDeleted/markActive operations, eliminating the per-vector upsert loop bottleneck (TODO lines 514-515, 546-547) - Add timeout parameter to remove() delete call (TODO line 483) - Document Milvus COSINE distance score range [0,2] rescaling to [0,1] for codebase consistency (TODO line 253) - Fix typos in docstrings and comments Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: remove unrelated PageStatus "Stopping..." changes from Milvus PR The PageStatus changes belong in a separate PR (#549) and were accidentally included here. * fix(nodes): address CodeRabbit feedback on Milvus PR #562 - Remove dead protocol check (host already stripped of scheme at init) - Add exception chaining with 'from e' for connection errors (B904) - Add output_fields to markDeleted/markActive queries to prevent data loss during upsert (was only returning primary key) - Add output_fields to renderChunks query to prevent KeyError on content/chunkId access Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): address remaining review feedback on Milvus PR #562 - Remove unrelated PageStatus changes that were re-introduced - Validate timeout and bulkInsertBatchSize to ensure positive values - Make isDeleted a keyword-only argument in _batchUpsertResults Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(vscode): improve stop button feedback in Pipeline Observability screen Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): add input validation and sanitization to LLM chat drivers Add a shared validation module and integrate it into ChatBase and all LLM nodes that bypass the base chat path, preventing control character injection, empty prompts, malformed model names, and unsafe token limits from reaching provider APIs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: remove unrelated PageStatus "Stopping..." changes from LLM validation PR The PageStatus changes belong in a separate PR (#549) and were accidentally included here. * fix: address CodeRabbit review findings on input validation - Re-check prompt emptiness after sanitization to catch control-only prompts - Validate total_tokens param before clamping output tokens - Move min 1024 output tokens check after validate_max_tokens clamping - Use validate_prompt() in Mistral/Perplexity chat() overrides to match shared ChatBase validation behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): address kwit75's review feedback on LLM input validation - Remove double/triple validation: keep validate_prompt() only in chat_string() (the main entry point), remove redundant sanitize_prompt() from _chat() and validate_prompt() from Mistral/Perplexity chat() overrides - Fix validate_model_name(None) breaking existing setups: return None gracefully when model is not yet configured instead of raising ValueError - Add @ to model name regex to support org@model provider formats - IBM Watson formatting changes kept as-is since they are ruff format enforced style, not hand-made cosmetic changes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): remove redundant sanitize_prompt from gemini and ibm_watson drivers Validation is now centralized in ChatBase.chat_string() — individual drivers should not duplicate sanitization. Removes the redundant calls and imports per kwit75's review feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): add type guards for model name and token validation Address CodeRabbit suggestions: - Guard validate_model_name against non-string inputs - Guard validate_max_tokens against bool values (isinstance(True, int) is True in Python) * add mistral and perplexity validation --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: ryan-t-christensen <ryan.christensen@rocketride.ai>
…screen (#549) Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(vscode): improve stop button feedback in Pipeline Observability screen Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(nodes): improve Milvus vector DB node — address all TODOs - Add configurable timeout (default 60s) replacing hardcoded timeout=20, read from node config via 'timeout' key (TODO line 101, 483) - Add connection error handling with meaningful failure messages instead of raw pymilvus exceptions propagating - Implement bulk insert with configurable batch size (default 50) for addChunks(), replacing one-at-a-time upserts (TODO lines 449, 464) - Add _batchUpsertResults() helper to batch-update markDeleted/markActive operations, eliminating the per-vector upsert loop bottleneck (TODO lines 514-515, 546-547) - Add timeout parameter to remove() delete call (TODO line 483) - Document Milvus COSINE distance score range [0,2] rescaling to [0,1] for codebase consistency (TODO line 253) - Fix typos in docstrings and comments Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: remove unrelated PageStatus "Stopping..." changes from Milvus PR The PageStatus changes belong in a separate PR (#549) and were accidentally included here. * fix(nodes): address CodeRabbit feedback on Milvus PR #562 - Remove dead protocol check (host already stripped of scheme at init) - Add exception chaining with 'from e' for connection errors (B904) - Add output_fields to markDeleted/markActive queries to prevent data loss during upsert (was only returning primary key) - Add output_fields to renderChunks query to prevent KeyError on content/chunkId access Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): address remaining review feedback on Milvus PR #562 - Remove unrelated PageStatus changes that were re-introduced - Validate timeout and bulkInsertBatchSize to ensure positive values - Make isDeleted a keyword-only argument in _batchUpsertResults Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(vscode): improve stop button feedback in Pipeline Observability screen Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): add input validation and sanitization to LLM chat drivers Add a shared validation module and integrate it into ChatBase and all LLM nodes that bypass the base chat path, preventing control character injection, empty prompts, malformed model names, and unsafe token limits from reaching provider APIs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: remove unrelated PageStatus "Stopping..." changes from LLM validation PR The PageStatus changes belong in a separate PR (#549) and were accidentally included here. * fix: address CodeRabbit review findings on input validation - Re-check prompt emptiness after sanitization to catch control-only prompts - Validate total_tokens param before clamping output tokens - Move min 1024 output tokens check after validate_max_tokens clamping - Use validate_prompt() in Mistral/Perplexity chat() overrides to match shared ChatBase validation behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): address kwit75's review feedback on LLM input validation - Remove double/triple validation: keep validate_prompt() only in chat_string() (the main entry point), remove redundant sanitize_prompt() from _chat() and validate_prompt() from Mistral/Perplexity chat() overrides - Fix validate_model_name(None) breaking existing setups: return None gracefully when model is not yet configured instead of raising ValueError - Add @ to model name regex to support org@model provider formats - IBM Watson formatting changes kept as-is since they are ruff format enforced style, not hand-made cosmetic changes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): remove redundant sanitize_prompt from gemini and ibm_watson drivers Validation is now centralized in ChatBase.chat_string() — individual drivers should not duplicate sanitization. Removes the redundant calls and imports per kwit75's review feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): add type guards for model name and token validation Address CodeRabbit suggestions: - Guard validate_model_name against non-string inputs - Guard validate_max_tokens against bool values (isinstance(True, int) is True in Python) * add mistral and perplexity validation --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: ryan-t-christensen <ryan.christensen@rocketride.ai>
* feat(vscode): improve stop button feedback in Pipeline Observability screen Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): add input validation and sanitization to LLM chat drivers Add a shared validation module and integrate it into ChatBase and all LLM nodes that bypass the base chat path, preventing control character injection, empty prompts, malformed model names, and unsafe token limits from reaching provider APIs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: remove unrelated PageStatus "Stopping..." changes from LLM validation PR The PageStatus changes belong in a separate PR (#549) and were accidentally included here. * fix: address CodeRabbit review findings on input validation - Re-check prompt emptiness after sanitization to catch control-only prompts - Validate total_tokens param before clamping output tokens - Move min 1024 output tokens check after validate_max_tokens clamping - Use validate_prompt() in Mistral/Perplexity chat() overrides to match shared ChatBase validation behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): address kwit75's review feedback on LLM input validation - Remove double/triple validation: keep validate_prompt() only in chat_string() (the main entry point), remove redundant sanitize_prompt() from _chat() and validate_prompt() from Mistral/Perplexity chat() overrides - Fix validate_model_name(None) breaking existing setups: return None gracefully when model is not yet configured instead of raising ValueError - Add @ to model name regex to support org@model provider formats - IBM Watson formatting changes kept as-is since they are ruff format enforced style, not hand-made cosmetic changes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): remove redundant sanitize_prompt from gemini and ibm_watson drivers Validation is now centralized in ChatBase.chat_string() — individual drivers should not duplicate sanitization. Removes the redundant calls and imports per kwit75's review feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nodes): add type guards for model name and token validation Address CodeRabbit suggestions: - Guard validate_model_name against non-string inputs - Guard validate_max_tokens against bool values (isinstance(True, int) is True in Python) * add mistral and perplexity validation --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: ryan-t-christensen <ryan.christensen@rocketride.ai>
…screen (#549) Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…screen (#549) Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…screen (#549) Handle TASK_STATE.STOPPING in the control button to show "Stopping..." with a disabled state and distinct orange styling, preventing duplicate clicks and giving immediate visual feedback during pipeline shutdown. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
Type
Enhancement
Why this feature fits this codebase
The codebase already defines
TASK_STATE.STOPPING(value 4) in the task state enum and theStatusHeadercomponent already renders a "Stopping" label with an orange indicator dot for this state. However, the control button ingetControlButton()did not handleTASK_STATE.STOPPING— it fell through to the default case, showing a disabled "Run" button. This change aligns the button behavior with the existing state machine and visual language already established in the codebase (orange = stopping, as seen in.status-indicator.stoppingand the deploy page's stopping state).What changed
apps/vscode/src/providers/views/PageStatus/PageStatus.tsx: Added aTASK_STATE.STOPPINGcheck ingetControlButton()that returns a disabled "Stopping..." button with thestopping-btnCSS class, placed before the RUNNING/INITIALIZING check so the stopping state takes priority.apps/vscode/src/providers/views/PageStatus/styles.css: Added.action-btn.stopping-btnstyle with--vscode-charts-orangebackground andcursor: not-allowed, consistent with the existing.status-indicator.stoppingorange color and the.action-btn.disabledpattern.Validation
TASK_STATE.STOPPINGstate (value 4) is already emitted by the engine during pipeline shutdown — no backend changes needed.action-btn.disabledrule (opacity: 0.4; cursor: not-allowed) applies alongside.stopping-btnfor consistent disabled UXStatusHeaderalready displays "Stopping" with an orange dot for this state, so the button now matches the header indicatorHow this can be extended
handlePipelineActioninPageStatusProvider.tscould send intermediate status messages back to the webview for more granular progressCloses #404
#Hack-with-bay-2
Summary by CodeRabbit
New Features
Style