Files
summercms/.planning/quick/261006-s0v-remove-copy-from-locale-ui-from-ml-text-/261006-s0v-PLAN.md

4.7 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, estimate
phase plan type wave depends_on files_modified autonomous requirements estimate
quick-261006-s0v 01 execute 1
admin/src/components/form/fields/MLTextField.vue
admin/src/components/form/fields/MLMarkdownField.vue
admin/tests/form/MLFields.test.ts
docs/backend/forms.md
modules/boardwalk/dist/
true
QUICK-261006-s0v
tokens raw_tokens tasks confidence
25000 25000 1 high
Remove copy-from-locale from admin `mltext` and `mlmarkdown` fields. Keep one locale selector per field, synchronized across ML controls, and nested `Record` save bodies. Copy currently overwrites the active locale with the other locale's (often empty) string, so the editor appears to go blank.

Purpose: Journal UAT — the operator does not want Copy, and the control is lossy. Output: SPA components and tests, forms.md sentence, rebuilt modules/boardwalk/dist, one code commit.

<execution_context> @/.claude/gsd-core/workflows/execute-plan.md @/.claude/gsd-core/templates/summary.md </execution_context>

@.planning/STATE.md @CLAUDE.md @admin/src/components/form/fields/MLTextField.vue @admin/src/components/form/fields/MLMarkdownField.vue @admin/tests/form/MLFields.test.ts @docs/backend/forms.md @scripts/check-admin-dist.sh

Facts:

  • Both ML components have a visible locale <select data-ml-locale>, a second unlabeled <select data-ml-copy-from> (other locales), and a Copy button that runs copyLocale(): values[active] = values[copyFrom] ?? ''. On create, the other locale is "", so Copy blanks the field the operator is editing.
  • otherLocales and copyFrom exist only for that chrome. Locale broadcast (broadcastMLLocale / ML_LOCALE_CHANGE) stays.
  • docs/backend/forms.md "Markdown and multilingual fields" currently says "Copy-from-locale fills the active locale from another code already in the value." Delete that sentence. Historical Phase 14.2.1 PLAN/VERIFICATION files stay as-written.
  • Embedded SPA: after Vue edits, npm --prefix admin run build then commit modules/boardwalk/dist. scripts/check-admin-dist.sh is the drift gate.
  • Commit rules: one logical change, planning docs not in the code commit, no co-author trailers.
Task 1: Drop copy-from chrome; keep locale picker and broadcast admin/src/components/form/fields/MLTextField.vue, admin/src/components/form/fields/MLMarkdownField.vue, admin/tests/form/MLFields.test.ts, docs/backend/forms.md, modules/boardwalk/dist/ admin/src/components/form/fields/MLTextField.vue, admin/src/components/form/fields/MLMarkdownField.vue, admin/tests/form/MLFields.test.ts, docs/backend/forms.md (Markdown and multilingual fields) In MLTextField.vue and MLMarkdownField.vue, delete copyFrom, otherLocales, copyLocale, the copy-from select, and the Copy button. setLocale only assigns activeLocale. Keep data-ml-locale, broadcastMLLocale, and the editor.

In MLFields.test.ts, rewrite edits the active locale and copies from another to switch locale and type into the active field without [data-ml-copy-from] / [data-ml-copy]. In the existing "one locale selector" case, also assert those copy selectors and buttons are absent on both components.

In docs/backend/forms.md, remove the Copy-from-locale sentence; leave the rest of the paragraph.

Rebuild with npm --prefix admin run build and include modules/boardwalk/dist.

Commit: fix(admin): drop ML copy-from locale chrome (or equivalent). No .planning files, no trailers. cd /media/nvme/dev/golem15/summercms.io/summercms/summercms.go && npm --prefix admin test -- tests/form/MLFields.test.ts && npm --prefix admin run typecheck && scripts/check-admin-dist.sh && go test ./cmd/summer -run TestDocsTree && ! grep -R -n 'data-ml-copy' admin/src admin/tests docs/backend/forms.md ML fields expose only the locale selector; Copy is gone; tests and docs match; dist is rebuilt; one code commit.

- npm --prefix admin test -- tests/form/MLFields.test.ts - npm --prefix admin run typecheck - scripts/check-admin-dist.sh - go test ./cmd/summer -run TestDocsTree - No data-ml-copy / copyLocale remaining in admin/src, admin/tests, or docs/backend/forms.md

<success_criteria>

  • Clicking around an mltext/mlmarkdown field cannot blank the active locale via Copy, because Copy is not there.
  • Switching en/pl still switches every ML control on the form.
  • Nested locale maps still round-trip. </success_criteria>
Create `.planning/quick/261006-s0v-remove-copy-from-locale-ui-from-ml-text-/261006-s0v-SUMMARY.md` when done