Skip to content

feat(media): add flat folder UI - #2586

Draft
khoinguyenpham04 wants to merge 6 commits into
feat/media-folders-apifrom
feat/media-folders-ui
Draft

feat(media): add flat folder UI#2586
khoinguyenpham04 wants to merge 6 commits into
feat/media-folders-apifrom
feat/media-folders-ui

Conversation

@khoinguyenpham04

Copy link
Copy Markdown
Collaborator

What does this PR do?

Adds the focused admin UI for the flat Media Library folder foundation in #2584. Editors can create, rename, browse, and delete folders; permitted users can move local media through the Media Details Location control; deleting a folder returns its media to the Main library without changing IDs, URLs, storage keys, or usage records.

The interface follows the stable Strapi Media Library baseline while using native Kumo components: compact folder rows, explicit link and edit actions, Back and breadcrumb navigation, one mixed folder/media table in list mode, bounded loading/retry/load-more states, responsive mobile actions, and direction-aware folder names. Folder navigation preserves relevant search, filter, provider, view, page-size, focus, and scroll state.

This is PR2 of the folders sequence and is stacked directly on #2584. It intentionally excludes nesting, counts, bulk moves, drag and drop, upload-to-folder behavior, Media Picker changes, provider behavior, CLI commands, MCP commands, and plugin changes. Local uploads continue to enter the Main library.

Stack:

  1. feat(media): add numbered library pagination #2582 — numbered Media Library pagination
  2. feat(media): add flat folder API foundation #2584 — flat folder API foundation
  3. This PR — flat folder admin UI

Related media roadmap Discussions:

A folder-specific maintainer-approved Discussion was not found. This PR remains a draft pending scope confirmation.

Type of change

  • Bug fix
  • Feature (requires maintainer-approved Discussion)
  • Refactor (no behavior change)
  • Translation
  • Documentation
  • Performance improvement
  • Tests
  • Chore (dependencies, CI, tooling)

Checklist

  • I have read CONTRIBUTING.md
  • Typecheck passes for the changed admin package
  • Type-aware lint passes with 0 diagnostics
  • Targeted component, router, API, database, and browser tests pass
  • All changed TypeScript and documentation files pass their formatters
  • I have added/updated tests for my changes
  • User-visible admin strings are wrapped for translation, RTL-safe, and no messages.po files are included
  • I have added and reviewed emdash and @emdash-cms/admin minor changesets
  • New features link to an approved Discussion: folder-specific approval is still needed

AI-generated code disclosure

  • This PR includes AI-generated code — model/tool: Codex GPT-5.6, with GPT-5.6 Terra Thinking X High second-opinion reviews

Screenshots / test output

The UI was exercised end to end at 1512×982 and 320×800 in light/dark themes, English LTR, and Arabic RTL. The browser audit covered grid/list modes, responsive 4/3/2/1 folder breakpoints, create/rename/delete, Location, global folder search, Back/Forward and direct URLs, safe deletion, delayed pagination, loading/error/retry states, focus restoration, scroll preservation, and mixed-direction long names.

  • 89 focused Media Library, folder-dialog, and Media Details component tests passed.
  • 37 admin API-client and router tests passed.
  • 61 focused core folder, database, route, and client tests passed.
  • Targeted Media Library Playwright flows and axe WCAG 2.x AA audits passed.
  • Admin typecheck, type-aware lint, build, formatting, and diff checks passed.
  • Iterative Terra Thinking X High adversarial review converged with no findings.
  • CI will publish the branch preview for visual review.

@github-actions

Copy link
Copy Markdown
Contributor

Scope check

This PR changes 4,314 lines across 34 files. Large PRs are harder to review and more likely to be closed without review.

If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs.

See CONTRIBUTING.md for contribution guidelines.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
emdash-demo-do 3fac548 Aug 21 2026, 09:07 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
docs 3fac548 Aug 21 2026, 09:07 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
emdash-demo-cache 3fac548 Aug 21 2026, 09:08 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://feat-media-folders-ui.try.emdashcms.com, https://feat-media-folders-ui-emdash-playground.emdash-cms.workers.dev (commit 3fac548)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://bacd4bf4.try.emdashcms.com, https://bacd4bf4-emdash-playground.emdash-cms.workers.dev 3fac548 2026-08-21T09:08:23.555Z Visit the dashboard ↗

@github-actions

Copy link
Copy Markdown
Contributor

Overlapping PRs

This PR modifies files that are also changed by other open PRs:

This may cause merge conflicts or duplicated work. A maintainer will coordinate.

@github-actions github-actions Bot mentioned this pull request Aug 21, 2026
18 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant