From 5ed29de348d59fc82c6d65d3440d4dc0dd32e96c Mon Sep 17 00:00:00 2001 From: Tim Bradgate Date: Fri, 30 Jan 2026 12:44:28 +0000 Subject: [PATCH 1/2] Fix duplicate HTML IDs across Vue modal components Resolves SonarQube reliability issues by ensuring unique HTML IDs in components with both 'add' and 'edit' modals. Each form element now uses context-specific prefixes (new-/edit-) to prevent accessibility issues and JavaScript selector conflicts. Also adds explanatory comment to intentionally empty catch block in ServerSelector.vue URL validator. Co-Authored-By: Claude Opus 4.5 --- client/src/views/electron/ServerSelector.vue | 1 + client/src/views/show/config/ConfigCast.vue | 56 +++++--- .../views/show/config/ConfigCharacters.vue | 50 +++++--- client/src/views/show/config/ConfigCues.vue | 64 +++++----- .../config/acts_and_scenes/ConfigActs.vue | 58 +++++---- .../config/acts_and_scenes/ConfigScenes.vue | 54 ++++---- .../config/characters/CharacterGroups.vue | 56 ++++---- .../show/config/cues/ScriptLineCueEditor.vue | 36 +++--- .../show/config/mics/MicList.vue | 44 +++---- .../config/script/StageDirectionStyles.vue | 100 ++++++++------- .../show/config/stage/CrewList.vue | 56 +++++--- .../show/config/stage/PropsList.vue | 120 ++++++++++-------- .../user/settings/CueColourPreferences.vue | 24 ++-- .../user/settings/StageDirectionStyles.vue | 76 ++++++----- 14 files changed, 443 insertions(+), 352 deletions(-) diff --git a/client/src/views/electron/ServerSelector.vue b/client/src/views/electron/ServerSelector.vue index cc3cb033..9ba8eb00 100644 --- a/client/src/views/electron/ServerSelector.vue +++ b/client/src/views/electron/ServerSelector.vue @@ -350,6 +350,7 @@ const validUrl = (value) => { const url = new URL(value.startsWith('http') ? value : `http://${value}`); return url.protocol === 'http:' || url.protocol === 'https:'; } catch { + // Invalid URL syntax - return false for validation return false; } }; diff --git a/client/src/views/show/config/ConfigCast.vue b/client/src/views/show/config/ConfigCast.vue index 5a274225..39b0e7f7 100644 --- a/client/src/views/show/config/ConfigCast.vue +++ b/client/src/views/show/config/ConfigCast.vue @@ -62,27 +62,35 @@ @ok="onSubmitNew" > - + - + This is a required field. - + - + This is a required field. @@ -98,27 +106,35 @@ @ok="onSubmitEdit" > - + - + This is a required field. - + - + This is a required field. diff --git a/client/src/views/show/config/ConfigCharacters.vue b/client/src/views/show/config/ConfigCharacters.vue index 74dd670c..ffe45695 100644 --- a/client/src/views/show/config/ConfigCharacters.vue +++ b/client/src/views/show/config/ConfigCharacters.vue @@ -73,32 +73,37 @@ @ok="onSubmitNew" > - + - + This is a required field. - + - + - + This is a required field. - + - + - + This is a required field and must be 5 characters or less. - + This is a required field and must be 100 characters or less. - + - + This is a required field. @@ -123,44 +123,44 @@ @ok="onSubmitEditCueType" > - + - + This is a required field and must be 5 characters or less. - + This is a required field and must be 100 characters or less. - + - + This is a required field. diff --git a/client/src/vue_components/show/config/acts_and_scenes/ConfigActs.vue b/client/src/vue_components/show/config/acts_and_scenes/ConfigActs.vue index 37af19e6..e1487819 100644 --- a/client/src/vue_components/show/config/acts_and_scenes/ConfigActs.vue +++ b/client/src/vue_components/show/config/acts_and_scenes/ConfigActs.vue @@ -67,35 +67,39 @@ @ok="onSubmitNew" > - + - + This is a required field. - + @@ -110,38 +114,42 @@ @ok="onSubmitEdit" > - + - + This is a required field. - + - + This cannot form a circular dependency between acts. diff --git a/client/src/vue_components/show/config/acts_and_scenes/ConfigScenes.vue b/client/src/vue_components/show/config/acts_and_scenes/ConfigScenes.vue index 568e12f9..78d1cc18 100644 --- a/client/src/vue_components/show/config/acts_and_scenes/ConfigScenes.vue +++ b/client/src/vue_components/show/config/acts_and_scenes/ConfigScenes.vue @@ -91,40 +91,40 @@ @ok="onSubmitNew" > - + - + This is a required field. - + - + This is a required field. @@ -139,44 +139,44 @@ @ok="onSubmitEdit" > - + - + This is a required field. - + - + This is a required field. - + This cannot form a circular dependency between scenes. diff --git a/client/src/vue_components/show/config/characters/CharacterGroups.vue b/client/src/vue_components/show/config/characters/CharacterGroups.vue index 3fea250d..1788981a 100644 --- a/client/src/vue_components/show/config/characters/CharacterGroups.vue +++ b/client/src/vue_components/show/config/characters/CharacterGroups.vue @@ -62,35 +62,39 @@ @ok="onSubmitNew" > - + - + This is a required field. - + - + - + This is a required field. - + - + - + This is a required field. - + - + This is a required field. @@ -208,27 +208,27 @@ @ok="onSubmitEdit" > - + - + This is a required field. - + - + This is a required field. diff --git a/client/src/vue_components/show/config/mics/MicList.vue b/client/src/vue_components/show/config/mics/MicList.vue index e5625f94..8621d678 100644 --- a/client/src/vue_components/show/config/mics/MicList.vue +++ b/client/src/vue_components/show/config/mics/MicList.vue @@ -48,31 +48,31 @@ @ok="onSubmitNewMicrophone" > - + - + This is a required field, and must be unique. - + Something went wrong! @@ -88,31 +88,31 @@ @ok="onSubmitEditMicrophone" > - + - + This is a required field, and must be unique. - + Something went wrong! diff --git a/client/src/vue_components/show/config/script/StageDirectionStyles.vue b/client/src/vue_components/show/config/script/StageDirectionStyles.vue index 6d7cabeb..220b3e65 100644 --- a/client/src/vue_components/show/config/script/StageDirectionStyles.vue +++ b/client/src/vue_components/show/config/script/StageDirectionStyles.vue @@ -39,23 +39,27 @@

Configuration Options

- + This is a required field. - - + + Default @@ -81,41 +85,41 @@ - + This is a required field. @@ -150,23 +154,27 @@

Configuration Options

- + This is a required field. - - + + Default @@ -192,41 +200,41 @@ - + This is a required field. diff --git a/client/src/vue_components/show/config/stage/CrewList.vue b/client/src/vue_components/show/config/stage/CrewList.vue index d1c0b566..0a5388c6 100644 --- a/client/src/vue_components/show/config/stage/CrewList.vue +++ b/client/src/vue_components/show/config/stage/CrewList.vue @@ -38,27 +38,35 @@ @ok="onSubmitNew" > - + - + This is a required field. - + - + This is a required field. @@ -73,27 +81,35 @@ @ok="onSubmitEdit" > - + - + This is a required field. - + - + This is a required field. diff --git a/client/src/vue_components/show/config/stage/PropsList.vue b/client/src/vue_components/show/config/stage/PropsList.vue index 37fa495b..533d2abf 100644 --- a/client/src/vue_components/show/config/stage/PropsList.vue +++ b/client/src/vue_components/show/config/stage/PropsList.vue @@ -77,31 +77,35 @@ @ok="onSubmitNewPropType" > - + - + This is a required field. - + This is a required field. @@ -116,31 +120,35 @@ @ok="onSubmitEditPropType" > - + - + This is a required field. - + This is a required field. @@ -156,43 +164,47 @@ @ok="onSubmitNewProp" > - + - + This is a required field. - + - + This is a required field. - + This is a required field. @@ -207,43 +219,47 @@ @ok="onSubmitEditProp" > - + - + This is a required field. - + - + This is a required field. - + This is a required field. diff --git a/client/src/vue_components/user/settings/CueColourPreferences.vue b/client/src/vue_components/user/settings/CueColourPreferences.vue index 008f708f..9593e463 100644 --- a/client/src/vue_components/user/settings/CueColourPreferences.vue +++ b/client/src/vue_components/user/settings/CueColourPreferences.vue @@ -53,19 +53,19 @@

Configuration Options

- + This is a required field. @@ -97,19 +97,19 @@

Configuration Options

- + This is a required field. diff --git a/client/src/vue_components/user/settings/StageDirectionStyles.vue b/client/src/vue_components/user/settings/StageDirectionStyles.vue index 559239f6..8f5aceb8 100644 --- a/client/src/vue_components/user/settings/StageDirectionStyles.vue +++ b/client/src/vue_components/user/settings/StageDirectionStyles.vue @@ -54,8 +54,12 @@

Configuration Options

- - + + Default @@ -81,41 +85,41 @@ - + This is a required field. @@ -149,8 +153,12 @@

Configuration Options

- - + + Default @@ -176,41 +184,41 @@ - + This is a required field. From dc6634f7ab21c59c3215538363f9731903b5602b Mon Sep 17 00:00:00 2001 From: Tim Bradgate Date: Fri, 30 Jan 2026 14:20:28 +0000 Subject: [PATCH 2/2] Fix duplicate HTML IDs in SceneryList.vue Add unique prefixes to form element IDs in the new-scenery-type, edit-scenery-type, new-scenery, and edit-scenery modals. Co-Authored-By: Claude Opus 4.5 --- .../show/config/stage/SceneryList.vue | 124 ++++++++++-------- 1 file changed, 70 insertions(+), 54 deletions(-) diff --git a/client/src/vue_components/show/config/stage/SceneryList.vue b/client/src/vue_components/show/config/stage/SceneryList.vue index b61363df..4d686482 100644 --- a/client/src/vue_components/show/config/stage/SceneryList.vue +++ b/client/src/vue_components/show/config/stage/SceneryList.vue @@ -77,31 +77,35 @@ @ok="onSubmitNewSceneryType" > - + - + This is a required field. - + This is a required field. @@ -116,31 +120,35 @@ @ok="onSubmitEditSceneryType" > - + - + This is a required field. - + This is a required field. @@ -157,46 +165,50 @@ > - + This is a required field. - + - + This is a required field. - + This is a required field. @@ -212,46 +224,50 @@ > - + This is a required field. - + - + This is a required field. - + This is a required field.