feat: add deprecate command with custom reason#921
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
Lunaria Status Overview🌕 This pull request will trigger status changes. Learn moreBy default, every PR changing files present in the Lunaria configuration's You can change this by adding one of the keywords present in the Tracked Files
Warnings reference
|
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
📝 WalkthroughWalkthroughThis PR introduces package deprecation functionality allowing users to deprecate npm packages or specific versions with custom messages. It includes a new Vue 3 modal component for the deprecation workflow, CLI support via a new Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 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 |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
app/pages/package/[...package].vue (1)
1156-1169: Remove duplicate CSS classes.The button has redundant
inline-flex items-center(conflicting withflex) andw-fullappearing twice in the class string.🧹 Proposed fix
<button type="button" - class="flex items-center justify-center w-full px-3 py-1.5 bg-bg-subtle rounded text-sm font-mono text-red-400 hover:text-red-500 transition-colors inline-flex items-center gap-1.5 w-full" + class="flex items-center justify-center gap-1.5 w-full px-3 py-1.5 bg-bg-subtle rounded text-sm font-mono text-red-400 hover:text-red-500 transition-colors" `@click`="deprecateModal?.open()" >
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
app/pages/package/[...package].vue (1)
1245-1256: Clean up duplicate CSS classes.The button has redundant classes: both
flexandinline-flex, andw-fullappears twice.♻️ Suggested fix
<button type="button" - class="flex items-center justify-center w-full px-3 py-1.5 bg-bg-subtle rounded text-sm font-mono text-red-400 hover:text-red-500 transition-colors inline-flex items-center gap-1.5 w-full" + class="flex items-center justify-center gap-1.5 w-full px-3 py-1.5 bg-bg-subtle rounded text-sm font-mono text-red-400 hover:text-red-500 transition-colors" `@click`="deprecateModal?.open()" >
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
app/components/Package/DeprecatePackageModal.vue (2)
24-28: Use the importedtfunction instead of$tin the script block.The component destructures
tfromuseI18n()on line 12, but this computed uses$t. For consistency within the script setup, use the importedtfunction.♻️ Proposed fix
const modalTitle = computed(() => deprecateVersion.value - ? `${$t('package.deprecation.modal.title')} ${props.packageName}@${deprecateVersion.value}` - : `${$t('package.deprecation.modal.title')} ${props.packageName}`, + ? `${t('package.deprecation.modal.title')} ${props.packageName}@${deprecateVersion.value}` + : `${t('package.deprecation.modal.title')} ${props.packageName}`, )
121-127: Consider removing inline focus-visible utilities from buttons.Per project convention, focus-visible styling for buttons is applied globally via
main.csswithbutton:focus-visible { outline: 2px solid var(--accent); ... }. The inlinefocus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fg/50utilities override this global rule.If this modal requires different focus styling, consider whether it should be consistent with the rest of the application or if an exception is warranted.
Based on learnings: "In the npmx.dev project, ensure that focus-visible styling for button and select elements is implemented globally in app/assets/main.css... Do not apply per-element inline utility classes."
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
app/components/Package/DeprecatePackageModal.vue (2)
69-69: Consider adding optional chaining for defensive access.If
state.value.operationsis ever undefined (e.g., during initialisation or after an error), this line would throw. Adding optional chaining aligns with the strict type-safety guideline.🛡️ Proposed fix
- const completedOp = state.value.operations.find(op => op.id === operation.id) + const completedOp = state.value.operations?.find(op => op.id === operation.id)
122-128: Remove inlinefocus-visibleutilities on buttons to rely on global styling.Both buttons in this component have custom
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fg/50classes. The project uses a global CSS rule for button focus-visible styling inmain.css. Removing these inline utilities ensures consistency across the codebase.This applies to the button on lines 164-175 as well.
♻️ Proposed fix
<button type="button" - class="w-full px-4 py-2 font-mono text-sm text-fg-muted bg-bg-subtle border border-border rounded-md transition-colors duration-200 hover:text-fg hover:border-border-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fg/50" + class="w-full px-4 py-2 font-mono text-sm text-fg-muted bg-bg-subtle border border-border rounded-md transition-colors duration-200 hover:text-fg hover:border-border-hover" `@click`="close" >And for the deprecate button:
<button type="button" :disabled="isDeprecating || !deprecateMessage.trim()" - class="w-full px-4 py-2 font-mono text-sm text-bg bg-fg rounded-md transition-colors duration-200 hover:bg-fg/90 disabled:opacity-50 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fg/50" + class="w-full px-4 py-2 font-mono text-sm text-bg bg-fg rounded-md transition-colors duration-200 hover:bg-fg/90 disabled:opacity-50 disabled:cursor-not-allowed" `@click`="handleDeprecate" >Based on learnings: "In the npmx.dev project, focus-visible styling for buttons and selects is applied globally via main.css... individual buttons or selects in Vue components should not rely on inline focus-visible utility classes."
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…feat/resolve-40 * 'feat/resolve-40' of github.com:eryue0220/npmx.dev: Update app/components/Package/DeprecatePackageModal.vue
…feat/resolve-40 * 'feat/resolve-40' of github.com:eryue0220/npmx.dev: Update app/pages/package/[[org]]/[name].vue
|
Does this allow deprecating all of this?
|
The second is not implemented. Specific version range is that user input the version range like 1.x that the whole version range will be deprecated, right? |
Yes, or for example |
|
The specific range is pretty cool, but it might be a separate addition? I wouldn't want to increase the number of changes in this PR. It's already pretty big. |
I'm good with that being a separate PR 👍 |
Okay I will separate the version range into another PR. |
|
@eryue0220, unfortunately I cannot manage to make this work locally
@gameroman @serhalp Did you guys manage? Perhaps I'm doing something wrong in my setup. |
Could you add more information about this, such as the error details in the terminal or browser logs? |
|
@eryue0220 good old 400 in the console and nothing in the terminal |
I didn't actually try it locally yet 🙈 |
Looks like it happens here npmx.dev/app/components/Package/DeprecatePackageModal.vue Lines 84 to 94 in ad353f3 npmx.dev/app/composables/useConnector.ts Lines 199 to 228 in ad353f3 |
@MatteoGabriele @gameroman Thanks for your feedback, I checked the error and I need to know you also run the |
I do |
From local clone? Or from npm? |
|
I'm not entirely sure what you mean, but I follow these steps:
|
I mean when you run |





resolve #40