Skip to content

feat: add empty table catalog disable action - #258

Merged
GatewayJ merged 2 commits into
rustfs:mainfrom
GatewayJ:feat/table-catalog-disable
Oct 7, 2026
Merged

GatewayJ merged 2 commits into
rustfs:mainfrom
GatewayJ:feat/table-catalog-disable

Conversation

@GatewayJ

@GatewayJ GatewayJ commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

Pull Request

Description

Add a confirmed action to disable an empty table catalog. Show it when the server advertises disable-supported and require SetTableBucket permission. Preserve the enabled state after a failed request and allow retry. The confirmation explains object preservation and lifecycle expiration, with translations for all supported locales.

Type of Change

  • New feature (non-breaking change which adds functionality)
  • Test improvements

Testing

  • Unit tests added/updated
  • Manual testing completed

Passed pnpm install --frozen-lockfile, pnpm type-check, pnpm lint, pnpm format:check, pnpm test:run (632 tests), and git diff --check using Node 22.

Automated behavior tests execute the same disable callback used by the page through runDialogAction: failed DELETE preserves enabled state and the open dialog, retry updates state only after success, pending submissions reject duplicates, and capability/permission/status gates prevent requests.

Exercised the actual Next.js page with deterministic S3/catalog responses: absent/false/true capability, missing permission, cancellation, 409 and retry, successful disable, re-enable, mobile, dark mode, and German mobile confirmation. These fixtures do not constitute live RustFS integration testing. Independent reviewer, tester, UX, and simplification checks completed.

Checklist

  • Code follows the project's style guidelines
  • Self-review completed
  • TypeScript types are properly defined
  • All commit messages are in English (Conventional Commits)
  • All existing tests pass
  • No new dependencies added, or they are justified

Related Issues

Refs rustfs/backlog#2729. Backend companion: rustfs/rustfs#8376, which adds the DELETE endpoint and capability advertisement. rustfs/rustfs#8116

Screenshots (if applicable)

Before After
Before After

UI evidence manifest

Additional Notes

Servers without the capability keep the existing controls. The server remains responsible for rejecting nonempty catalogs. Reverting this change removes the UI action without changing bucket state.

@GatewayJ
GatewayJ marked this pull request as draft October 7, 2026 03:14
@GatewayJ
GatewayJ marked this pull request as ready for review October 7, 2026 05:06
@GatewayJ
GatewayJ requested review from cxymds and a balanced review from Copilot October 7, 2026 05:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

The automated test only inspects source text and does not verify failure-state preservation or retry behavior.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

Adds a confirmed, capability-gated action for disabling empty table catalogs while preserving objects and supporting retries.

Changes:

  • Adds DELETE support and updates UI state only on success.
  • Gates the action by capability and SetTableBucket permission.
  • Adds translations, source assertions, and UI evidence documentation.
File Description
app/​(dashboard)/​table-catalog/​page.tsx Adds the confirmed disable action and UI control.
hooks/​use-table-catalog.ts Parses capability and exposes the DELETE request.
tests/​lib/​table-catalog-source.test.js Adds static assertions for the feature.
docs/​ui-review/​register.md Records UI review evidence.
i18n/​locales/​ar-MA.json Adds Arabic translations.
i18n/​locales/​de-DE.json Adds German translations.
i18n/​locales/​en-US.json Adds English strings.
i18n/​locales/​es-ES.json Adds Spanish translations.
i18n/​locales/​fr-FR.json Adds French translations.
i18n/​locales/​id-ID.json Adds Indonesian translations.
i18n/​locales/​it-IT.json Adds Italian translations.
i18n/​locales/​ja-JP.json Adds Japanese translations.
i18n/​locales/​ko-KR.json Adds Korean translations.
i18n/​locales/​pt-BR.json Adds Portuguese translations.
i18n/​locales/​ru-RU.json Adds Russian translations.
i18n/​locales/​tr-TR.json Adds Turkish translations.
i18n/​locales/​vi-VN.json Adds Vietnamese translations.
i18n/​locales/​zh-CN.json Adds Simplified Chinese translations.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread app/(dashboard)/table-catalog/page.tsx Outdated
@GatewayJ
GatewayJ merged commit ce5f707 into rustfs:main Oct 7, 2026
10 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.

2 participants