| 14.2.1-translate-plugin |
03 |
i18n |
| translate |
| cabana |
| markdown |
| mltext |
| mlmarkdown |
| TranslationWriter |
| proof-host |
| sm-grzybyfunkcjonalne-app |
|
| phase |
provides |
| 14.2.1-02 |
Translatable SetTranslated/Translated/WithLocale and permissioned Locales admin |
|
|
| cabana markdown, mltext, and mlmarkdown field types with nested locale-map lifting |
| Framework-owned cabana.TranslationWriter plus sm-translate-plugin Boot adapter |
| Safe cabana.RenderMarkdown (goldmark, no unsafe HTML) |
| SPA MarkdownField, MLTextField, MLMarkdownField with shared locale selector |
| Docs, regenerated OpenAPI/TS, committed boardwalk dist |
| sm-grzybyfunkcjonalne-app boots golem15.user + golem15.translate from durable submodules |
|
| 14.2.1-04 tests |
| 15-journal-plugin |
|
| tokens |
tasks |
commits |
| 27343 |
3 |
2 |
|
234111d245 |
e3b3475b1c |
a3553b9c4b8a9c83debe950198f568ee9b6000a6 |
4d32e86 |
| added |
patterns |
|
|
| ML locale maps are lifted before ProjectWritableFields; default locale fills the host scalar; other locales go through TranslationWriter inside the host save transaction |
| Proof host mounts compiled plugins as git submodules at plugins/golem15/{user,translate} with go.work use plus host and workspace replaces |
|
|
| created |
modified |
| modules/cabana/field_ml.go |
| modules/cabana/field_markdown.go |
| modules/cabana/ml_smoke_test.go |
| admin/src/components/form/fields/MarkdownField.vue |
| admin/src/components/form/fields/MLTextField.vue |
| admin/src/components/form/fields/MLMarkdownField.vue |
| admin/tests/form/MLFields.test.ts |
| ../sm-translate-plugin/classes/admin_writer.go |
| ../sm-grzybyfunkcjonalne-app/summer.yaml |
| ../sm-grzybyfunkcjonalne-app/go.work |
| ../sm-grzybyfunkcjonalne-app/.gitmodules |
| ../sm-grzybyfunkcjonalne-app/boot_test.go |
|
| modules/cabana/form_schema.go |
| modules/cabana/crud.go |
| modules/cabana/README.md |
| docs/backend/forms.md |
| docs/backend/admin-controllers.md |
| admin/src/components/form/registry.ts |
| admin/src/components/form/formState.ts |
| admin/tests/form/registry.test.ts |
| modules/boardwalk/dist/ |
| ../sm-translate-plugin/plugin.go |
|
|
| Task 2 locked grzyby-submodules: the proof host is sm-grzybyfunkcjonalne-app with plugins/golem15/user and plugins/golem15/translate |
| Host go.work replace points at ../summercms.go so the plugin sibling replace is overridden when mounted |
|
| cabana.TranslationWriter lives in the framework; the translate plugin Boot-publishes an adapter; there is no public translate-write endpoint |
| mlmarkdown composes MarkdownField; goldmark stays in cabana.RenderMarkdown without html.WithUnsafe |
|
| D-06 |
| D-09 |
| D-12 |
| D-13 |
| D-14 |
| D-15 |
| D-16 |
| D-17 |
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
Nested mltext save lifts the locale map, writes English on the host column, and Polish through TranslationWriter |
D-06 |
| kind |
ref |
status |
| unit |
modules/cabana#TestMLNestedSaveSmoke |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
SPA registry resolves markdown/mltext/mlmarkdown, sends nested locale records, and sanitizes markdown preview |
D-06 |
| kind |
ref |
status |
| unit |
admin/tests/form/MLFields.test.ts |
pass |
|
| kind |
ref |
status |
| unit |
admin/tests/form/registry.test.ts |
pass |
|
|
false |
|
| id |
description |
verification |
human_judgment |
| D3 |
Cabana README, forms/admin docs, OpenAPI, generated TS types, and boardwalk dist stay in sync with application-neutral examples |
| kind |
ref |
status |
| other |
go test ./cmd/summer -run TestDocsTree && go run ./cmd/summer docs:build --check |
pass |
|
| kind |
ref |
status |
| other |
scripts/check-admin-openapi.sh && npm --prefix admin run build |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D4 |
sm-grzybyfunkcjonalne-app mounts user and translate as submodules, generates the plugin list, and registers Locales admin |
D-13 |
| kind |
ref |
status |
| integration |
sm-grzybyfunkcjonalne-app#TestBootUserTranslate |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
rationale |
| D5 |
Task 2 proof-host layout locked as grzyby-submodules |
D-13 |
|
true |
Layout choice is a recorded human decision, not an automated assertion |
|
|
5min |
2026-10-06 |
complete |