Repository navigation
Add bulk checkout selection for core upgrades - #27
Conversation
A core upgrade is one sentence — "put 1.46 on REL1_46" — and the wizard made you say it a hundred times, once per extension row, with the ref retyped each time. The per-repository "all versions" toggle covers the other axis; this adds the one an upgrade actually needs. BulkCheckoutSelect sits above the picker: name a type, a core version and a ref, and it ticks every checkout that matches. It only writes rows into the selection the picker already owns, so each one still appears below with its own editable ref, and the review step still lists every Salt call before anything runs. A blank ref keeps each checkout's pin, and the panel says how many of the matched checkouts have no pin to fall back on rather than letting the server refuse the whole submission later. The version and type lists are derived from the checkouts the wizard offered, so a repository the operator may not touch is not selectable in bulk either. Existence of a line item's checkout now comes from the single query that already loads them instead of a per-item `exists` rule: a hundred-odd line items is the normal case now, and a rule per item is a query per item. The refusal names the offending row the same way, and says what is wrong with it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnxYdUnn47SEpPUC26ZVJE
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThe deployment wizard now supports bulk selection of extensions or skins by core version, shared ref assignment with individual editing, and validation against resolved checkout records. ChangesBulk checkout deployment flow
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Operator
participant CheckoutPicker
participant BulkCheckoutSelect
participant StoreDeploymentRequest
participant Deployment
Operator->>BulkCheckoutSelect: choose checkout type and core version
BulkCheckoutSelect->>CheckoutPicker: apply selected checkouts and shared ref
CheckoutPicker->>CheckoutPicker: update individual checkout entries
Operator->>StoreDeploymentRequest: submit deployment
StoreDeploymentRequest->>StoreDeploymentRequest: validate IDs against resolved checkouts
StoreDeploymentRequest->>Deployment: create deployment
Possibly related PRs
Suggested reviewers: ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 PHPStan (2.2.7)Composer install failed: this project depends on private packages that require authentication (e.g. GitLab/GitHub, Laravel Nova, etc.). Instead, run PHPStan in a CI/CD pipeline where you can use custom packages — our pipeline remediation tool can use the PHPStan output from your CI/CD pipeline. 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 |
Summary
Adds a new bulk selection component (
BulkCheckoutSelect) to the deployment wizard that allows operators to select every checkout of one type (e.g., all extensions) in a single core version and assign them all to one ref in a single action. This significantly improves the UX for core upgrades, which typically involve selecting dozens of extensions at once.Key Changes
New
BulkCheckoutSelect.vuecomponent: Provides a streamlined interface to select all checkouts of a given type in a specific core version and optionally assign them a common ref. The component:applyandclearevents to update the parent selectionUpdated
CheckoutPicker.vue:choiceFor()function that intelligently determines ref type (commit vs branch) based on the ref valueapplyBulk()andclearBulk()handlers to apply bulk selections to the modelEnhanced
StoreDeploymentRequestvalidation:withValidator()to avoid N+1 queries when submitting bulk selections (100+ items)Added test coverage: New tests verify that bulk selections work correctly and that non-existent checkouts are properly rejected
Implementation Details
https://claude.ai/code/session_01EnxYdUnn47SEpPUC26ZVJE
Summary by CodeRabbit
New Features
Bug Fixes
Documentation