diff --git a/src/backend/services/story_service.ts b/src/backend/services/story_service.ts index 917c0b09..63b55cf7 100644 --- a/src/backend/services/story_service.ts +++ b/src/backend/services/story_service.ts @@ -182,10 +182,6 @@ export class StoryService { target.coverImage = source.coverImage; } - if (locale !== sourceLocale && !target.tags) { - target.tags = source.tags; - } - const resourceService = new ResourceService(); const availableResources = await resourceService.listForLocale(locale); const targetFields = this.localisationFields(target); @@ -247,10 +243,6 @@ export class StoryService { target.coverImage = source.coverImage; } - if (locale !== sourceLocale && !target.tags) { - target.tags = source.tags; - } - const targetFields = this.localisationFields(target); return { diff --git a/src/backend/stubs/tests/unit/story_service.stub b/src/backend/stubs/tests/unit/story_service.stub index 3646960e..759aebdc 100644 --- a/src/backend/stubs/tests/unit/story_service.stub +++ b/src/backend/stubs/tests/unit/story_service.stub @@ -171,7 +171,7 @@ test.group('Story service', (group) => { assert.isUndefined(props); }); - test('editProps prefills tags from source when translation tags are empty', async ({ + test('editProps does not prefill tags from source when translation tags are empty', async ({ assert, }) => { const story = await StoryFactory.with('localisations').create(); @@ -188,7 +188,7 @@ test.group('Story service', (group) => { ); assert.isDefined(props); - assert.equal(props!.model.tags, 'gospel,john'); + assert.equal(props!.model.tags, ''); assert.equal(props!.source!.tags, 'gospel,john'); }); diff --git a/src/frontend/stories/components/story-edit-details.story.vue b/src/frontend/stories/components/story-edit-details.story.vue index 4fa27ee2..4d97a538 100644 --- a/src/frontend/stories/components/story-edit-details.story.vue +++ b/src/frontend/stories/components/story-edit-details.story.vue @@ -63,7 +63,7 @@ const translationLocaleModel = { title: '', coverImage: '', description: '', - tags: 'gospel,john', + tags: '', }; const translationWithoutTagsModel = { @@ -167,7 +167,7 @@ source locale only) classification fields, chapter template, and visibility. ## Variants - **Source locale** — single-column editable fields including chapter count and visibility -- **Translation locale** — side-by-side editable and read-only columns; tags prefilled from source when empty +- **Translation locale** — side-by-side editable and read-only columns; source tags shown in read-only column only - **Translation without tags** — translation mode where the source locale has no tags; both editable and read-only tag fields are empty - **Single template** — shows read-only Chapter Template when only one template is configured - **Multiple templates on edit** — read-only Chapter Template even when multiple templates are configured diff --git a/src/frontend/stories/story-edit.story.vue b/src/frontend/stories/story-edit.story.vue index db846001..76634f5b 100644 --- a/src/frontend/stories/story-edit.story.vue +++ b/src/frontend/stories/story-edit.story.vue @@ -308,7 +308,7 @@ const translationModel: StoryEditProps['model'] = { title: '', coverImage: '', description: '', - tags: 'gospel,john,new-testament', + tags: '', sections: [ { id: 'section-1', @@ -329,7 +329,7 @@ const arabicTranslationModel: StoryEditProps['model'] = { title: '', coverImage: '', description: '', - tags: 'gospel,john,new-testament', + tags: '', sections: [ { id: 'section-1', @@ -410,7 +410,7 @@ Saving posts attached resource IDs to the story localisation. - **Delete and save draft** — empty story, unpublished; shows Delete (`red`) and Save Changes (`secondary`) - **Without sections** — `storiesHasSections: true`; English source locale with no sections; Sections tab shows empty state message - **Validation errors on tabs** — `storiesHasSections: true`; failed publish validation; Details and Sections tabs show error indicators and inline field messages -- **Translation locale** — Spanish edit with English source column; tags prefilled from source on Details tab +- **Translation locale** — Spanish edit with English source column; source tags shown in read-only column only on Details tab - **Arabic translation locale** — `storiesHasSections: true`; Arabic edit on the left, English source on the right; RTL text in the translation column; side-by-side fields on Details and Sections tabs - **Translation without sections** — `storiesHasSections: true`; Spanish edit with English source column; source localisation has no sections, so the Sections tab is empty diff --git a/src/types.ts b/src/types.ts index 056d4a7f..adcb4c90 100644 --- a/src/types.ts +++ b/src/types.ts @@ -387,6 +387,7 @@ export interface StoryEditProps { title: string; coverImage: string; description: string; + tags: string | null; sections: StorySection[]; resources: ResourceItem[]; };