Skip to content

feat(admin): bulk ownership transfer for plugins - #5

Merged
debba merged 3 commits into
mainfrom
feat/admin-bulk-transfer
Aug 8, 2026
Merged

feat(admin): bulk ownership transfer for plugins#5
debba merged 3 commits into
mainfrom
feat/admin-bulk-transfer

Conversation

@debba

@debba debba commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

What

Adds a Transfer action to the admin plugins bulk selection bar, so an admin can reassign ownership of all selected plugins to another user in one operation.

Until now the only way to force-transfer a plugin was a direct PATCH /api/admin/plugins/:id call with ownerId — nothing in the UI exposed it.

Changes

API

  • POST /api/admin/plugins/bulk accepts a new transfer action with a required ownerId field.
  • Returns 400 if ownerId is missing or doesn't match an existing user; nothing is modified in that case.
  • The audit log entry (plugin.bulk.transfer) records the new owner and a fromOwners map of each plugin's previous owner.

Frontend

  • New Transfer button in the bulk selection bar on /admin/plugins, next to Approve/Reject/Delete.
  • Prompts for the new owner's user ID, following the same prompt pattern as the bulk reject reason.
  • New messages (admin_plugins_transfer, admin_plugins_bulk_transfer_prompt) translated in all six locales.

Tests

  • New admin-plugins-bulk.test.ts covering: successful multi-plugin transfer, missing ownerId, unknown target user, and missing plugin ids reported in missing.

Notes

  • The admin docs already list a Transfer action for plugins, so this also closes that docs/UI gap.
  • plugins.test.ts fails on a clean checkout in my environment (unrelated @tabularium/manifest resolution issue), so it's not a regression from this branch.

Mobile layout

  • The bulk selection bar now stacks vertically below the sm breakpoint and its buttons wrap instead of overflowing off-screen.
  • Plugin rows wrap on narrow screens: the action icons move to their own right-aligned line, so the plugin name, badges and repo URL keep their space.
  • The site header now collapses its nav links and account actions into a hamburger menu below the md breakpoint (dropdown under the bar, auto-closed on navigation), instead of overflowing off-screen. New nav_toggle_menu message in all six locales.

Add a 'transfer' action to POST /api/admin/plugins/bulk that reassigns
ownership of up to 100 plugins to a given user, validating the target
user exists and recording previous owners in the audit log entry.

Expose it in the admin plugins page as a Transfer button in the bulk
selection bar, prompting for the new owner's user ID (same pattern as
the bulk reject reason prompt). Localized in all six languages.
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated (UTC)
tabularium-docs Skipped Skipped Aug 8, 2026 6:03am
tabularium-website Skipped Skipped Aug 8, 2026 6:03am

Request Review

On narrow screens the bulk selection bar overflowed horizontally,
cutting off buttons, and the per-plugin action icons squeezed the
name/badges column down to nothing.

Stack the bulk bar vertically below the sm breakpoint and let its
buttons wrap. Let plugin rows wrap so the action icons drop to their
own right-aligned line, keeping the name, badges and repo URL
readable.
@vercel
vercel Bot temporarily deployed to Preview – tabularium-docs August 8, 2026 06:01 Inactive
@vercel
vercel Bot temporarily deployed to Preview – tabularium-website August 8, 2026 06:01 Inactive
The header rendered all nav links inline at every width, so on phones
the row overflowed and links were cut off, with no way to reach them.

Below the md breakpoint the nav links and account actions now collapse
into a hamburger-toggled dropdown under the header bar, closed
automatically on navigation. Language and theme toggles stay in the
bar. Desktop layout is unchanged.
@vercel
vercel Bot temporarily deployed to Preview – tabularium-website August 8, 2026 06:03 Inactive
@vercel
vercel Bot temporarily deployed to Preview – tabularium-docs August 8, 2026 06:03 Inactive
@debba
debba merged commit 82ca529 into main Aug 8, 2026
9 checks passed
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