| 14.2.1-translate-plugin |
05 |
i18n |
| translate |
| cabana |
| mltext |
| mlmarkdown |
| TranslatedExact |
| hydrateMLRecord |
| FORM_ENABLED_LOCALES |
| CR-01 |
|
| phase |
provides |
| 14.2.1-04 |
ML nested save, TranslationWriter adapter, TestMLNestedSave, SPA MLFields, phase gate |
|
|
| FormMeta.EnabledLocales on protect()'d form and relation schemas |
| TranslationWriter.TranslatedExact plus hydrateMLRecord on Show/save record maps |
| SPA FORM_ENABLED_LOCALES inject, create seed maps, and adopt merge |
| Regenerated OpenAPI, schema.d.ts, docs, and boardwalk dist |
|
| 14.2.1-06 |
| 15-journal-plugin |
|
| tokens |
tasks |
commits |
| 12147 |
3 |
2 |
|
ed81f2a0c1 |
424fe9ccc0 |
11ac3288d2f6775bfc22598c94ffe7dacf3c3dd1 |
| added |
patterns |
|
|
| Admin GET/save hydrates declared ML fields through TranslationWriter.TranslatedExact; missing non-default locales stay empty (no D-11 fallback) |
| SPA ML selectors read FORM_ENABLED_LOCALES from schema meta; adopt merges maps instead of replacing with a host scalar |
|
|
| created |
modified |
|
|
| modules/cabana/schema_types.go |
| modules/cabana/field_ml.go |
| modules/cabana/crud.go |
| modules/cabana/http.go |
| modules/cabana/ml_test.go |
| modules/cabana/ml_smoke_test.go |
| modules/cabana/README.md |
| docs/backend/forms.md |
| docs/backend/admin-controllers.md |
| admin/src/components/form/formContext.ts |
| admin/src/components/form/formState.ts |
| admin/src/views/FormView.vue |
| admin/src/components/form/fields/MLTextField.vue |
| admin/src/components/form/fields/MLMarkdownField.vue |
| admin/src/components/relation/RelationChildModal.vue |
| admin/src/components/relation/RelationPickerModal.vue |
| admin/tests/form/MLFields.test.ts |
| admin/tests/form/formState.test.ts |
| admin/openapi/admin.json |
| admin/src/api/schema.d.ts |
| modules/boardwalk/dist/ |
| ../sm-translate-plugin/classes/admin_writer.go |
|
|
| writer-exact: add TranslatedExact to cabana.TranslationWriter; AdminWriter delegates to classes.TranslatedExact |
| hydrateMLRecord runs after projectFullRecord on Show/save only; list rows stay host scalars |
| FORM_ENABLED_LOCALES is SPA-only; docs name cabana identifiers EnabledLocales, TranslatedExact, hydrateMLRecord |
|
| Exact admin reads go through TranslationWriter.TranslatedExact on the same Lookup as WriteTranslated; cabana never imports sm-translate-plugin |
| Create seeds {code: ""} for every enabled locale; adopt overlays localeRecord and places a host string on the default locale without dropping siblings |
|
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
Show/save RecordResult.Data for declared mltext/mlmarkdown is a locale map; missing pl is empty, not D-11 English; host column stays the default scalar |
D-17 |
| kind |
ref |
status |
| unit |
modules/cabana#TestMLHydration |
pass |
|
| kind |
ref |
status |
| unit |
modules/cabana#TestMLNestedSave |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
Create seeds empty maps for every enabled locale; FormView.adopt merges a GET host string without dropping sibling keys; MLTextField options equal FORM_ENABLED_LOCALES |
D-06 |
| kind |
ref |
status |
| automated_ui |
admin/tests/form/MLFields.test.ts |
pass |
|
| kind |
ref |
status |
| unit |
admin/tests/form/formState.test.ts |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D3 |
MLMarkdownField and RelationChildModal share the inject/seed/adopt path; OpenAPI FormMeta.enabledLocales, docs, and boardwalk dist stay in sync |
D-06 |
| kind |
ref |
status |
| automated_ui |
admin/tests/form/MLFields.test.ts |
pass |
|
| kind |
ref |
status |
| other |
bash scripts/check-admin-openapi.sh --check |
pass |
|
| kind |
ref |
status |
| other |
go test ./cmd/summer -run TestDocsTree |
pass |
|
| kind |
ref |
status |
| unit |
sm-translate-plugin/classes#TestTranslatableGetSet |
pass |
|
|
false |
|
|
11min |
2026-10-06 |
complete |