feat(media) Adds media drag uploads and picker metadata editing#1366
feat(media) Adds media drag uploads and picker metadata editing#1366masonjames wants to merge 7 commits into
Conversation
🦋 Changeset detectedLatest commit: 5db84aa The changes in this PR will be included in the next version bump. This PR includes changesets to release 16 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Scope checkThis PR changes 2,259 lines across 8 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. |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
…r-metadata # Conflicts: # packages/admin/src/components/MediaLibrary.tsx # packages/admin/src/components/MediaPickerModal.tsx
|
Update 2026-06-17:
Local verification on
|
|
Follow-up after CI completed: the branch is rebased/merged onto current main and is no longer conflict-dirty. Most checks passed, including CI Typecheck, Lint, Tests, Integration Tests, Browser Tests, all E2E shards, CodeQL, zizmor, formatting, and preview publishing. The remaining red check is CI / Smoke Tests, failing in tests/integration/smoke/site-matrix-smoke.test.ts for the aggregate command |
Weekly (Mon 09:17 UTC) + manual: ff-mirror upstream main to fork main, merge upstream into mj/prod, prove with core+admin build and the PR emdash-cms#1366 media test suites, push, and report carried-patch status. On merge conflict: abort, open an issue, alert via ntfy (optional secrets). Lives on mj/prod (the default branch) because GitHub runs cron workflows from the default branch; main stays a pristine upstream mirror. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The upload/confirm URL mapping called storage?.getPublicUrl() unconditionally; optional chaining guards a missing storage object but not a missing method, so upstream's placeholder tests (whose Storage doubles don't implement getPublicUrl) got a TypeError and a 500 from routes our media patch touches. Feature-detect the method and fall back to the relative proxy route, matching the existing fallback intent. Fixes the 5 upstream media placeholder tests on mj/prod; worth folding into PR emdash-cms#1366 as well.
Overlapping PRsThis PR modifies files that are also changed by other open PRs:
This may cause merge conflicts or duplicated work. A maintainer will coordinate. |
What does this PR do?
Adds the next media workflow improvements from discussion #990:
updateMediabehavior.Related discussion: #990
Closes: n/a (discussion-driven feature)
Type of change
Checklist
pnpm typecheckpassespnpm lintpassespnpm testpasses (or targeted tests for my change)pnpm formathas been runmessages.pochanges except in translation PRs — a workflow extracts catalogs on merge tomain.AI-generated code disclosure
Screenshots / test output
Manual QA completed locally before PR creation; optional RTL check was not rerun manually. The implementation was also smoke-checked in Arabic/RTL during development.
Automated checks run locally:
pnpm formatpnpm lint:json | jq '.diagnostics | length'->0pnpm typecheck-> passedpnpm --filter @emdash-cms/admin test tests/components/MediaLibrary.test.tsx tests/components/MediaPickerModal.test.tsx --run->64 passedpnpm --filter @emdash-cms/admin build-> passed