Clearing a taxonomy term description silently keeps the previous value
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 85/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- frontend
Research direction
Start in packages/admin/src/components/TaxonomyManager.tsx at the term update mutation, then check how packages/admin/src/lib/api/taxonomies.ts serializes its input. Make the update send an empty description instead of omitting it; keep the create mutation unchanged. Done means clearing and saving a description sends description: "" and reopening the term shows it empty, while an omitted description still preserves the stored value.
Written by the indexing model from the issue text.
Description
Description
Clearing the optional Description field of an existing tag and clicking Update does not clear the saved description. The dialog closes successfully, but reopening it restores the previous text. The same text persists after a full page reload. Saving a different nonempty description works.
Reproduced twice in Firefox, including a full save, reopen, clear, save, reload, reopen sequence. The update returns HTTP 200 and success: true, while the response still contains the old description.
Expected: explicitly clearing the field saves an empty description, and reopening the dialog shows an empty field.
Steps to reproduce
- Open the admin Tags page,
/_emdash/admin/taxonomies/tag?locale=cs. - Edit an existing tag and enter a nonempty Description, for example
test. - Click Update and reopen the same tag to confirm the value was saved.
- Select and delete all text in Description.
- Click Update and wait for the dialog to close.
- Reopen the tag. The previous description is still present.
- Reload the page and reopen the tag. The previous description is still present.
Environment
- Admin version shown: EmDash v1.1.0 (
c0a6e56). - Browser: Firefox 156.0.1.
- OS: macOS 27.0.1.
- Runtime: Cloudflare Workers with D1.
- Locale:
cs, default locale; tag taxonomy. - Reproduction date: October 5, 2026.
- Independently inspected upstream main revision:
740de2b1b42f1d871b91195bc3bbfc9e5e869df6.
Screenshots
Logs and request evidence
When the Description field is empty, the browser sends:
PUT /_emdash/api/taxonomies/tag/terms/ai?locale=cs
{"slug":"ai","label":"AI"}
HTTP 200 response, with unrelated response fields omitted here:
{"success":true,"data":{"term":{"slug":"ai","label":"AI","description":"QA mazání popisu 2026-10-05","locale":"cs"}}}
Root cause and suggested fix
TermFormDialog's update mutation converts the empty description to undefined:
description: description || undefined,
The API client uses JSON.stringify(input), which drops that property. handleTermUpdate preserves the stored data when input.description is undefined. The server therefore receives no instruction to clear the field.
Send the description string directly in the update mutation:
- description: description || undefined,
+ description,
Keep the create mutation unchanged. The existing update schema accepts an empty string, and the handler already supports it. Omitted descriptions should continue to mean no change for API callers. This requires no migration or nullable API change.
Proposed patch
Apply from the repository root:
--- a/packages/admin/src/components/TaxonomyManager.tsx
+++ b/packages/admin/src/components/TaxonomyManager.tsx
@@ -672,7 +672,7 @@
slug,
label,
parentId: parentId || undefined,
- description: description || undefined,
+ description,
},
{ locale: term.locale ?? locale },
);
The shared term dialog suggests categories and custom taxonomy terms may also be affected; the live browser reproduction covered a tag only.
Regression verification
A local wire-level check executes the actual upstream update callback and API serializer. It confirms that the original code omits the cleared description and the proposed change sends description: "". Six checks pass for empty text, replacement text, whitespace, Unicode, term locale and editor locale fallback. The proposed patch passes git apply --check against the inspected source.
Recommended regression coverage before merging:
- Edit a term with an existing description, clear it, save, refetch and reopen; assert the input remains empty and the PUT contains
description: "". - Verify a request omitting
descriptionpreserves the existing value, whiledescription: ""clears it. - Verify editing one locale does not clear another translation's description.
The proposed change has not been deployed or tested in a running patched admin. The test tag was restored to its original description after reproduction.
- Dominant language
- TypeScript
- Stars
- 13.4k
- Forks
- 1.3k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 345
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from emdash-cms/emdash
-
plugin-forms: autoresponder and Reply-To use the first email field, even an optional onePossibly taken @eisenbruch claimed this 4 days ago. Openarea/plugins bot:fix triage/awaiting-reporter
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
emdash-cms/emdash#4504 · 4 comments ·
Maintainers usually reply within 2 days
-
WordPress import review labels the SEO toggle "SEO settings (Yoast)" even when the site uses Rank MathPossibly taken @iNerdStack claimed this 13 days ago. Openbot:bug bot:needs-attention
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
emdash-cms/emdash#4110 · 3 comments ·
Maintainers usually reply within 2 days
-
bot:bug bot:needs-attention bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
emdash-cms/emdash#3992 · 2 comments ·
Maintainers usually reply within 2 days
-
bot:bug bot:needs-attention
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
emdash-cms/emdash#3972 · 2 comments ·
Maintainers usually reply within 2 days
-
bot:needs-attention bot:task
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
emdash-cms/emdash#3821 · 1 comment ·
Maintainers usually reply within 2 days
All issues in emdash-cms/emdash
Similar issues
-
mobile-app
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Open-Locker/Open-Locker#352 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
leanprover-community/lean4game#589 ·
Maintainers usually reply within 2 days
-
Add: CS Action BGOpencheck:passed streams:add
Difficulty 1/5 Under an hour Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
unocss/unocss#5421 · 1 comment ·
Maintainers usually reply within 1 day