diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 565f0ad66..09c2ee6bf 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -3,9 +3,9 @@ - + \ No newline at end of file diff --git a/.sonar-export/sonar-issues-enriched.json b/.sonar-export/sonar-issues-enriched.json deleted file mode 100644 index 87679c79f..000000000 --- a/.sonar-export/sonar-issues-enriched.json +++ /dev/null @@ -1,610 +0,0 @@ -[ - { - "ordinal": 1, - "key": "AZxoSLyeSm898HwP_JIB", - "rule": "typescript:S1874", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "OPEN", - "resolution": null, - "message": "The signature \u0027(): Provider[]\u0027 of \u0027provideAnimations\u0027 is deprecated.", - "component": "JuergGood_angularai:frontend/src/app/app.config.ts", - "file": "frontend/src/app/app.config.ts", - "project": "JuergGood_angularai", - "line": 32, - "textRange": { - "startLine": 32, - "endLine": 32, - "startOffset": 4, - "endOffset": 21 - }, - "effort": "15min", - "debt": "15min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxoSLyeSm898HwP_JIB\u0026id=JuergGood_angularai", - "sourceSnippet": " 29: headerName: \u0027X-XSRF-TOKEN\u0027\r\n 30: })\r\n 31: ),\r\n\u003e\u003e 32: provideAnimations(),\r\n 33: provideTranslateService({\r\n 34: defaultLanguage: \u0027en\u0027\r\n 35: })," - }, - { - "ordinal": 2, - "key": "AZxjQFb4ixv-IQC_v9a8", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 17, - "endLine": 17, - "startOffset": 23, - "endOffset": 29 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a8\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 3, - "key": "AZxjQFb4ixv-IQC_v9a_", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 26, - "endLine": 26, - "startOffset": 8, - "endOffset": 14 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a_\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 4, - "key": "AZxjQFb4ixv-IQC_v9bB", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 34, - "endLine": 34, - "startOffset": 25, - "endOffset": 31 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bB\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 5, - "key": "AZxjQFchixv-IQC_v9bO", - "rule": "css:S4666", - "severity": "MAJOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Unexpected duplicate selector \"body.theme-dark .mat-expansion-panel-header\", first used at line 541", - "component": "JuergGood_angularai:frontend/src/styles.css", - "file": "frontend/src/styles.css", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 550, - "endLine": 550, - "startOffset": 0, - "endOffset": 45 - }, - "effort": "1min", - "debt": "1min", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bO\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 6, - "key": "AZxjQFchixv-IQC_v9bM", - "rule": "css:S4666", - "severity": "MAJOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary\", first used at line 131", - "component": "JuergGood_angularai:frontend/src/styles.css", - "file": "frontend/src/styles.css", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 136, - "endLine": 136, - "startOffset": 0, - "endOffset": 54 - }, - "effort": "1min", - "debt": "1min", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bM\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 7, - "key": "AZxjQFchixv-IQC_v9bN", - "rule": "css:S4666", - "severity": "MAJOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary:disabled\", first used at line 164", - "component": "JuergGood_angularai:frontend/src/styles.css", - "file": "frontend/src/styles.css", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 174, - "endLine": 174, - "startOffset": 0, - "endOffset": 63 - }, - "effort": "1min", - "debt": "1min", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bN\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 8, - "key": "AZxjQFb4ixv-IQC_v9bA", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 28, - "endLine": 28, - "startOffset": 54, - "endOffset": 60 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bA\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 9, - "key": "AZxjQFb4ixv-IQC_v9bD", - "rule": "javascript:S1226", - "severity": "MINOR", - "type": "BUG", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Introduce a new variable or use its initial value before reassigning \"t\".", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 37, - "endLine": 37, - "startOffset": 8, - "endOffset": 28 - }, - "effort": "5min", - "debt": "5min", - "cleanCodeAttribute": "CLEAR", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bD\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 10, - "key": "AZxjQFb4ixv-IQC_v9bE", - "rule": "javascript:S1226", - "severity": "MINOR", - "type": "BUG", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Introduce a new variable or use its initial value before reassigning \"y\".", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 38, - "endLine": 38, - "startOffset": 8, - "endOffset": 38 - }, - "effort": "5min", - "debt": "5min", - "cleanCodeAttribute": "CLEAR", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bE\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 11, - "key": "AZxjQFb4ixv-IQC_v9bF", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 39, - "endLine": 39, - "startOffset": 7, - "endOffset": 13 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bF\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 12, - "key": "AZxjQFchixv-IQC_v9bL", - "rule": "css:S4657", - "severity": "CRITICAL", - "type": "BUG", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Unexpected shorthand \"background\" after \"background-color\"", - "component": "JuergGood_angularai:frontend/src/styles.css", - "file": "frontend/src/styles.css", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 315, - "endLine": 315, - "startOffset": 0, - "endOffset": 37 - }, - "effort": "5min", - "debt": "5min", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "HIGH" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bL\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 13, - "key": "AZxjQFchixv-IQC_v9bP", - "rule": "css:S4666", - "severity": "MAJOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Unexpected duplicate selector \"body.theme-dark\", first used at line 611", - "component": "JuergGood_angularai:frontend/src/styles.css", - "file": "frontend/src/styles.css", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 709, - "endLine": 709, - "startOffset": 0, - "endOffset": 17 - }, - "effort": "1min", - "debt": "1min", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bP\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 14, - "key": "AZxjQFb4ixv-IQC_v9a-", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 24, - "endLine": 24, - "startOffset": 27, - "endOffset": 33 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a-\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 15, - "key": "AZxjQFb4ixv-IQC_v9a9", - "rule": "javascript:S7764", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "CLOSED", - "resolution": "REMOVED", - "message": "Prefer `globalThis` over `window`.", - "component": "JuergGood_angularai:frontend/src/index.html", - "file": "frontend/src/index.html", - "project": "JuergGood_angularai", - "line": null, - "textRange": { - "startLine": 24, - "endLine": 24, - "startOffset": 8, - "endOffset": 14 - }, - "effort": "2min", - "debt": "2min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a9\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 16, - "key": "AZxjQFafixv-IQC_v9ay", - "rule": "typescript:S1874", - "severity": "MINOR", - "type": "CODE_SMELL", - "status": "OPEN", - "resolution": null, - "message": "\u0027provideAnimations\u0027 is deprecated.", - "component": "JuergGood_angularai:frontend/src/app/app.config.ts", - "file": "frontend/src/app/app.config.ts", - "project": "JuergGood_angularai", - "line": 4, - "textRange": { - "startLine": 4, - "endLine": 4, - "startOffset": 9, - "endOffset": 26 - }, - "effort": "15min", - "debt": "15min", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "comments": [ - - ], - "flows": [ - - ], - "quickFixAvailable": null, - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFafixv-IQC_v9ay\u0026id=JuergGood_angularai", - "sourceSnippet": " 1: import { ApplicationConfig, provideBrowserGlobalErrorListeners, ErrorHandler, provideAppInitializer, inject } from \u0027@angular/core\u0027;\r\n 2: import { provideRouter } from \u0027@angular/router\u0027;\r\n 3: import { provideHttpClient, withFetch, withXsrfConfiguration, withInterceptors } from \u0027@angular/common/http\u0027;\r\n\u003e\u003e 4: import { provideAnimations } from \u0027@angular/platform-browser/animations\u0027;\r\n 5: import { provideTranslateService } from \u0027@ngx-translate/core\u0027;\r\n 6: import { provideTranslateHttpLoader } from \u0027@ngx-translate/http-loader\u0027;\r\n 7: " - } -] diff --git a/.sonar-export/sonar-issues-for-junie.json b/.sonar-export/sonar-issues-for-junie.json deleted file mode 100644 index 344cfbdc3..000000000 --- a/.sonar-export/sonar-issues-for-junie.json +++ /dev/null @@ -1,290 +0,0 @@ -[ - { - "ordinal": 1, - "file": "frontend/src/app/app.config.ts", - "line": 32, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "typescript:S1874", - "message": "The signature \u0027(): Provider[]\u0027 of \u0027provideAnimations\u0027 is deprecated.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxoSLyeSm898HwP_JIB\u0026id=JuergGood_angularai", - "sourceSnippet": " 29: headerName: \u0027X-XSRF-TOKEN\u0027\r\n 30: })\r\n 31: ),\r\n\u003e\u003e 32: provideAnimations(),\r\n 33: provideTranslateService({\r\n 34: defaultLanguage: \u0027en\u0027\r\n 35: })," - }, - { - "ordinal": 2, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a8\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 3, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a_\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 4, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bB\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 5, - "file": "frontend/src/styles.css", - "line": null, - "severity": "MAJOR", - "type": "CODE_SMELL", - "rule": "css:S4666", - "message": "Unexpected duplicate selector \"body.theme-dark .mat-expansion-panel-header\", first used at line 541", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bO\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 6, - "file": "frontend/src/styles.css", - "line": null, - "severity": "MAJOR", - "type": "CODE_SMELL", - "rule": "css:S4666", - "message": "Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary\", first used at line 131", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bM\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 7, - "file": "frontend/src/styles.css", - "line": null, - "severity": "MAJOR", - "type": "CODE_SMELL", - "rule": "css:S4666", - "message": "Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary:disabled\", first used at line 164", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bN\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 8, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bA\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 9, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "BUG", - "rule": "javascript:S1226", - "message": "Introduce a new variable or use its initial value before reassigning \"t\".", - "cleanCodeAttribute": "CLEAR", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bD\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 10, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "BUG", - "rule": "javascript:S1226", - "message": "Introduce a new variable or use its initial value before reassigning \"y\".", - "cleanCodeAttribute": "CLEAR", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bE\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 11, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9bF\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 12, - "file": "frontend/src/styles.css", - "line": null, - "severity": "CRITICAL", - "type": "BUG", - "rule": "css:S4657", - "message": "Unexpected shorthand \"background\" after \"background-color\"", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "HIGH" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bL\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 13, - "file": "frontend/src/styles.css", - "line": null, - "severity": "MAJOR", - "type": "CODE_SMELL", - "rule": "css:S4666", - "message": "Unexpected duplicate selector \"body.theme-dark\", first used at line 611", - "cleanCodeAttribute": "LOGICAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFchixv-IQC_v9bP\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 14, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a-\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 15, - "file": "frontend/src/index.html", - "line": null, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "javascript:S7764", - "message": "Prefer `globalThis` over `window`.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFb4ixv-IQC_v9a9\u0026id=JuergGood_angularai", - "sourceSnippet": null - }, - { - "ordinal": 16, - "file": "frontend/src/app/app.config.ts", - "line": 4, - "severity": "MINOR", - "type": "CODE_SMELL", - "rule": "typescript:S1874", - "message": "\u0027provideAnimations\u0027 is deprecated.", - "cleanCodeAttribute": "CONVENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueUrl": "https://sonarcloud.io/project/issues?open=AZxjQFafixv-IQC_v9ay\u0026id=JuergGood_angularai", - "sourceSnippet": " 1: import { ApplicationConfig, provideBrowserGlobalErrorListeners, ErrorHandler, provideAppInitializer, inject } from \u0027@angular/core\u0027;\r\n 2: import { provideRouter } from \u0027@angular/router\u0027;\r\n 3: import { provideHttpClient, withFetch, withXsrfConfiguration, withInterceptors } from \u0027@angular/common/http\u0027;\r\n\u003e\u003e 4: import { provideAnimations } from \u0027@angular/platform-browser/animations\u0027;\r\n 5: import { provideTranslateService } from \u0027@ngx-translate/core\u0027;\r\n 6: import { provideTranslateHttpLoader } from \u0027@ngx-translate/http-loader\u0027;\r\n 7: " - } -] diff --git a/.sonar-export/sonar-issues-full.json b/.sonar-export/sonar-issues-full.json deleted file mode 100644 index 2be25aa38..000000000 --- a/.sonar-export/sonar-issues-full.json +++ /dev/null @@ -1,900 +0,0 @@ -{ - "project": "JuergGood_angularai", - "statuses": "OPEN,CONFIRMED", - "impactSeverities": "", - "impactSoftwareQualities": "MAINTAINABILITY,RELIABILITY,SECURITY", - "exportedAt": "2026-03-10T22:03:11", - "repoRoot": "C:\\doc\\sw\\ai\\angularai\\angularai", - "total": 16, - "issues": [ - { - "key": "AZxoSLyeSm898HwP_JIB", - "rule": "typescript:S1874", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/app/app.config.ts", - "project": "JuergGood_angularai", - "line": 32, - "hash": "d1797e4295616414e92b83b5a76a582c", - "textRange": { - "startLine": 32, - "endLine": 32, - "startOffset": 4, - "endOffset": 21 - }, - "flows": [ - - ], - "status": "OPEN", - "message": "The signature \u0027(): Provider[]\u0027 of \u0027provideAnimations\u0027 is deprecated.", - "effort": "15min", - "debt": "15min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "cwe", - "obsolete", - "type-dependent" - ], - "transitions": [ - "accept", - "confirm", - "resolve", - "falsepositive", - "wontfix" - ], - "actions": [ - "set_type", - "set_tags", - "comment", - "set_severity", - "assign" - ], - "comments": [ - - ], - "creationDate": "2026-02-16T21:07:45+0000", - "updateDate": "2026-03-10T20:53:50+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9a8", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "2d55caa8e27355b0dad55aaf09f78621", - "textRange": { - "startLine": 17, - "endLine": 17, - "startOffset": 23, - "endOffset": 29 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-09T22:44:35+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9a_", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "4f9560fee3d0817557f572a1064921c8", - "textRange": { - "startLine": 26, - "endLine": 26, - "startOffset": 8, - "endOffset": 14 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-09T22:44:35+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9bB", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "2d55caa8e27355b0dad55aaf09f78621", - "textRange": { - "startLine": 34, - "endLine": 34, - "startOffset": 25, - "endOffset": 31 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-09T22:44:35+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFchixv-IQC_v9bO", - "rule": "css:S4666", - "severity": "MAJOR", - "component": "JuergGood_angularai:frontend/src/styles.css", - "project": "JuergGood_angularai", - "hash": "f7eb2753e085011e55f0c6dc932bf7e5", - "textRange": { - "startLine": 550, - "endLine": 550, - "startOffset": 0, - "endOffset": 45 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Unexpected duplicate selector \"body.theme-dark .mat-expansion-panel-header\", first used at line 541", - "effort": "1min", - "debt": "1min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-08T08:11:16+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "LOGICAL", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFchixv-IQC_v9bM", - "rule": "css:S4666", - "severity": "MAJOR", - "component": "JuergGood_angularai:frontend/src/styles.css", - "project": "JuergGood_angularai", - "hash": "5dbb5eb0d4d84deec3eb8d0ec243a70d", - "textRange": { - "startLine": 136, - "endLine": 136, - "startOffset": 0, - "endOffset": 54 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary\", first used at line 131", - "effort": "1min", - "debt": "1min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-07T13:23:20+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "LOGICAL", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFchixv-IQC_v9bN", - "rule": "css:S4666", - "severity": "MAJOR", - "component": "JuergGood_angularai:frontend/src/styles.css", - "project": "JuergGood_angularai", - "hash": "88c41757803fcc0df0421daa097a8547", - "textRange": { - "startLine": 174, - "endLine": 174, - "startOffset": 0, - "endOffset": 63 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary:disabled\", first used at line 164", - "effort": "1min", - "debt": "1min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-07T13:23:20+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "LOGICAL", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9bA", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "98ab68f7f3e793f1930d163fa0384f7c", - "textRange": { - "startLine": 28, - "endLine": 28, - "startOffset": 54, - "endOffset": 60 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-03T22:13:41+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9bD", - "rule": "javascript:S1226", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "471f638cd7021e8f77dc24d634b58784", - "textRange": { - "startLine": 37, - "endLine": 37, - "startOffset": 8, - "endOffset": 28 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Introduce a new variable or use its initial value before reassigning \"t\".", - "effort": "5min", - "debt": "5min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-01T16:03:28+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "BUG", - "organization": "juerggood", - "cleanCodeAttribute": "CLEAR", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9bE", - "rule": "javascript:S1226", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "27b7dda992563b634502fd00c688e436", - "textRange": { - "startLine": 38, - "endLine": 38, - "startOffset": 8, - "endOffset": 38 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Introduce a new variable or use its initial value before reassigning \"y\".", - "effort": "5min", - "debt": "5min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-01T16:03:28+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "BUG", - "organization": "juerggood", - "cleanCodeAttribute": "CLEAR", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9bF", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "6ba5bffb92dd4bdaf43841e0d36a8d76", - "textRange": { - "startLine": 39, - "endLine": 39, - "startOffset": 7, - "endOffset": 13 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-02-01T16:03:28+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFchixv-IQC_v9bL", - "rule": "css:S4657", - "severity": "CRITICAL", - "component": "JuergGood_angularai:frontend/src/styles.css", - "project": "JuergGood_angularai", - "hash": "b6b3e09dfa5ddf3ecba5e620758a6e71", - "textRange": { - "startLine": 315, - "endLine": 315, - "startOffset": 0, - "endOffset": 37 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Unexpected shorthand \"background\" after \"background-color\"", - "effort": "5min", - "debt": "5min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-01-22T23:34:17+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "BUG", - "organization": "juerggood", - "cleanCodeAttribute": "LOGICAL", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "RELIABILITY", - "severity": "HIGH" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFchixv-IQC_v9bP", - "rule": "css:S4666", - "severity": "MAJOR", - "component": "JuergGood_angularai:frontend/src/styles.css", - "project": "JuergGood_angularai", - "hash": "78498f77ee1ca6c84e5d6e211da7f528", - "textRange": { - "startLine": 709, - "endLine": 709, - "startOffset": 0, - "endOffset": 17 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Unexpected duplicate selector \"body.theme-dark\", first used at line 611", - "effort": "1min", - "debt": "1min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-01-22T23:34:17+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "LOGICAL", - "cleanCodeAttributeCategory": "INTENTIONAL", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "MEDIUM" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9a-", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "1f54e742240c303fb82f8ad1b6f95d34", - "textRange": { - "startLine": 24, - "endLine": 24, - "startOffset": 27, - "endOffset": 33 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-01-22T21:48:29+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFb4ixv-IQC_v9a9", - "rule": "javascript:S7764", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/index.html", - "project": "JuergGood_angularai", - "hash": "1f54e742240c303fb82f8ad1b6f95d34", - "textRange": { - "startLine": 24, - "endLine": 24, - "startOffset": 8, - "endOffset": 14 - }, - "flows": [ - - ], - "resolution": "REMOVED", - "status": "CLOSED", - "message": "Prefer `globalThis` over `window`.", - "effort": "2min", - "debt": "2min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "es2020", - "portability" - ], - "transitions": [ - - ], - "actions": [ - "comment" - ], - "comments": [ - - ], - "creationDate": "2026-01-22T21:48:29+0000", - "updateDate": "2026-02-16T19:23:00+0000", - "closeDate": "2026-02-16T19:23:00+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - }, - { - "key": "AZxjQFafixv-IQC_v9ay", - "rule": "typescript:S1874", - "severity": "MINOR", - "component": "JuergGood_angularai:frontend/src/app/app.config.ts", - "project": "JuergGood_angularai", - "line": 4, - "hash": "b0b7d0e2941bc07c4179d42d9bd42f29", - "textRange": { - "startLine": 4, - "endLine": 4, - "startOffset": 9, - "endOffset": 26 - }, - "flows": [ - - ], - "status": "OPEN", - "message": "\u0027provideAnimations\u0027 is deprecated.", - "effort": "15min", - "debt": "15min", - "assignee": "JuergGood-0OBYU@github", - "author": "sub@goodfamily.ch", - "tags": [ - "cwe", - "obsolete", - "type-dependent" - ], - "transitions": [ - "accept", - "confirm", - "resolve", - "falsepositive", - "wontfix" - ], - "actions": [ - "set_type", - "set_tags", - "comment", - "set_severity", - "assign" - ], - "comments": [ - - ], - "creationDate": "2026-01-02T17:20:54+0000", - "updateDate": "2026-03-10T20:53:50+0000", - "type": "CODE_SMELL", - "organization": "juerggood", - "cleanCodeAttribute": "CONVENTIONAL", - "cleanCodeAttributeCategory": "CONSISTENT", - "impacts": [ - { - "softwareQuality": "MAINTAINABILITY", - "severity": "LOW" - } - ], - "issueStatus": "OPEN", - "projectName": "angularai-parent", - "internalTags": [ - - ] - } - ] -} diff --git a/README_de.md b/README_de.md deleted file mode 100644 index 990c3f92a..000000000 --- a/README_de.md +++ /dev/null @@ -1,164 +0,0 @@ -# AngularAI-Anwendung - -Dies ist eine Full-Stack-Anwendung mit einem Spring Boot-Backend und einem Angular-Frontend. - -## Voraussetzungen - -- [Docker](https://www.docker.com/get-started) -- [Docker Compose](https://docs.docker.com/compose/install/) - -## Ausführen mit Docker - -Um die gesamte Anwendung mit Docker Compose auszuführen, navigieren Sie zum Stammverzeichnis. Erstellen Sie zunächst eine `.env`-Datei im Stammverzeichnis (Sie können `.env.example` als Vorlage kopieren): - -```bash -cp .env.example .env -``` - -Führen Sie dann den folgenden Befehl aus: - -```bash -docker compose -f deploy/dev/docker-compose.yml up --build -``` - -Die Anwendung ist verfügbar unter: -- Frontend: [http://localhost](http://localhost) -- Backend API: [http://localhost:8080/api](http://localhost:8080/api) -- H2-Konsole: [http://localhost:8080/h2-console](http://localhost:8080/h2-console) (JDBC URL: `jdbc:h2:mem:testdb`) -- Mailpit (Lokale E-Mail): [http://localhost:8025](http://localhost:8025) - -### H2 Connection Details - -Please try connecting with the **absolute path** used inside the Docker container: - -1. **Try this JDBC URL first**: - `jdbc:h2:file:/app/data/angularai;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE` - -2. **Alternative (if the above fails)**: - `jdbc:h2:file:/data/angularai;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE` - -### Verification -If you are connected to the correct database, you should see more than just `INFORMATION_SCHEMA` and `Users` in the left sidebar. You should specifically see: -* `ACTION_LOG` -* `USERS` -* `TASKS` -* `FLYWAY_SCHEMA_HISTORY` - -If the sidebar still only shows `INFORMATION_SCHEMA`, it means H2 has just created a brand new, empty database file at that location because it couldn't find the existing one. - -### Summary of Connection Details for Docker: -* **Driver Class**: `org.h2.Driver` -* **JDBC URL**: `jdbc:h2:file:/app/data/angularai;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE` -* **User Name**: `sa` -* **Password**: (leave empty) - -Once connected to the correct database, you can run: -```sql -SELECT * FROM ACTION_LOG; -``` -(H2 usually defaults to uppercase for table names in the UI, so `ACTION_LOG` should work there). - -## Deployment-Skripte - -Skripte für gängige Deployment-Aufgaben finden Sie im Ordner `scripts/` (PowerShell und Windows CMD). **Hinweis: PowerShell-Skripte laden Variablen automatisch aus Ihrer lokalen `.env`-Datei.** - -- **Lokales Docker-Deployment**: `.\scripts\deploy-local.ps1` oder `.\scripts\deploy-local.bat` - - Führt `docker compose -f deploy/dev/docker-compose.yml up --build -d` aus, um die Anwendung lokal im Hintergrund zu starten. -- **Docker-Fehlerbehebung**: `.\scripts\debug-docker.ps1` oder `.\scripts\debug-docker.bat` - - Ein Diagnosetool zur Überprüfung des Docker Desktop-Dienstes, der Verbindung und des Kontexts. Verwenden Sie dies, wenn `deploy-local.ps1` oder `deploy-local.bat` mit Verbindungsfehlern fehlschlägt. -- **AWS-Deployment**: `.\scripts\deploy-aws.ps1` oder `.\scripts\deploy-aws.bat` - - Authentifiziert sich bei AWS ECR, erstellt, taggt und pusht Frontend- und Backend-Images und erzwingt ein neues Deployment auf ECS-Services. -- **Umgebung laden**: Das Skript `load-env.ps1` wird von anderen PowerShell-Skripten verwendet, um sicherzustellen, dass sensible Schlüssel (wie `IPSTACK_API_KEY`) in der Sitzung verfügbar sind. - -## Projektstruktur - -- `backend/`: Spring Boot-Anwendung. -- `frontend/`: Angular-Anwendung. -- `android/`: Android Jetpack Compose-Anwendung. -- `deploy/dev/docker-compose.yml`: Orchestrierung für beide Services. -- `deploy/dev/Dockerfile`: Multi-Stage-Build für die Anwendung. - -## Entwicklung - -### IntelliJ IDEA Setup -Um das Backend von IntelliJ auszuführen, müssen Sie sicherstellen, dass die erforderlichen Umgebungsvariablen (wie `IPSTACK_API_KEY`) verfügbar sind. -- Sie können diese manuell zu Ihren Run-Konfigurationen hinzufügen. -- Alternativ können Sie ein Plugin wie **EnvFile** verwenden, um die `.env`-Datei automatisch in Ihre Run-Konfigurationen zu laden. **Übergeben (commit) Sie diese Schlüssel niemals an Git.** - -### Frontend (Web) -Navigieren Sie zu `frontend/` und führen Sie `npm install` und dann `npm start` aus. -Der Angular-Entwicklungsserver ist so konfiguriert, dass er `/api`-Anfragen an `http://localhost:8080` weiterleitet. Stellen Sie sicher, dass das Backend läuft. - -### Statische Analyse & Linting - -Bevor Sie Code committen, stellen Sie sicher, dass er alle statischen Analyseprüfungen besteht. - -**Backend (Java):** -```bash -mvn checkstyle:check -mvn pmd:check -``` - -**Frontend (Web):** -```bash -cd frontend -npm run lint -``` - -## Dokumentation - -Die Projektdokumentation ist im Ordner `doc/` organisiert. Für einen umfassenden Überblick beginnen Sie mit dem **[Architektur-Index](doc/architecture/index.md)** (Englisch). - -### Zentrale Leitfäden -- [Benutzerhandbuch](doc/user-guide/user-guide.md) ([Deutsch](doc/user-guide/user-guide_de.md)) -- [Administrator-Handbuch](doc/admin-guide/admin-guide.md) ([Deutsch](doc/admin-guide/admin-guide_de.md)) -- [Release Notes](doc/user-guide/release-notes.md) -- [FAQ](doc/user-guide/faq.md) ([Deutsch](doc/user-guide/faq_de.md)) - -### Architektur & Technik -- [Architektur-Index](doc/architecture/index.md) (Einstiegspunkt) -- [Basis-Analyse](doc/architecture/current-system-analysis.md) -- [Systemübersicht](doc/architecture/system-overview.md) -- [Backend-Architektur](doc/architecture/backend-architecture.md) -- [Frontend-Architektur](doc/architecture/frontend-architecture.md) -- [KI und Datenfluss](doc/architecture/ai-data-flow.md) -- [ER-Diagramm (ERD)](doc/architecture/erd.md) -- [REST-API-Übersicht](doc/architecture/api-overview.md) -- [Modul-Abhängigkeiten](doc/architecture/module-dependencies.md) -- [Entwickler-Onboarding](doc/architecture/developer-onboarding.md) -- [MCP & Autonome Agenten](doc/development/common/mcp-architecture.md) -- [Entwicklungsstandards](doc/development/common/Development-Standards.md) -- [Frontend-Entwicklung](doc/development/frontend/Frontend-Development.md) -- [Backend-Entwicklung](doc/development/backend/Backend-Development.md) -- [Lighthouse-Analyse](doc/development/analysis/lighthouse-economic-feasibility.md) - -### Deployment & Betrieb -- [Deployment & Infrastruktur](doc/infrastructure/Deployment.md) -- [AWS Fargate Deployment](doc/deployment/fargate-deployment.md) -- [Betriebshandbuch (Monitoring & Wartung)](doc/operations-guide.md) ([Deutsch](doc/operations-guide_de.md)) -- [Operations Runbook](doc/operations/RUNBOOK.md) -- [Docker-Optimierung](doc/infrastructure/Docker-Optimization.md) -- [Confluence-Exportskript](scripts/md_to_confluence.py) -- [PostgreSQL-Setup](doc/development/backend/postgres_setup.md) - -## Release-Prozess - -Um ein neues Release zu erstellen (z. B. Version 1.0.3): - -1. **Vorbereitung**: Stellen Sie sicher, dass alle Änderungen committet und getestet wurden. -2. **Release-Skript ausführen**: Führen Sie den folgenden Befehl in PowerShell aus: - ```bash - .\scripts\release.ps1 -NewVersion "1.0.3" - ``` - Dieses Skript wird: - - Die Version in der `pom.xml` aktualisieren. - - Die Version über alle Projektdateien hinweg synchronisieren (`package.json`, `build.gradle` usw.). - - Einen Header für die neue Version in der `release-notes.md` hinzufügen. - - Die JSON-Dateien der Hilfe-Daten neu generieren. - - Einen Git-Commit und ein Git-Tag erstellen (z. B. `v1.0.3`). -3. **Manueller Schritt**: Bearbeiten Sie `doc/userguide/release-notes.md`, um aussagekräftige Details für das Release hinzuzufügen. -4. **Push**: Pushen Sie die Änderungen und Tags in das Repository: - ```bash - git push origin main --tags - ``` -5. **Nächste Version**: Um mit der Entwicklung der nächsten Version (z. B. 1.0.4) zu beginnen, führen Sie das Skript einfach erneut mit der neuen Versionsnummer aus, wenn Sie bereit sind, diese zu veröffentlichen. Während der Entwicklung können Sie die Version in der `pom.xml` bei Bedarf manuell aktualisieren und `.\scripts\sync-version.ps1` ausführen. diff --git a/RegexDebug.class b/RegexDebug.class deleted file mode 100644 index c48375a9e..000000000 Binary files a/RegexDebug.class and /dev/null differ diff --git a/RegexDebug.java b/RegexDebug.java deleted file mode 100644 index f69d3fc6e..000000000 --- a/RegexDebug.java +++ /dev/null @@ -1,60 +0,0 @@ -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class RegexDebug { - private static final Pattern ADR_HEADER_PATTERN = Pattern.compile("(?mi)^\\s*#+\\s*(ADR-\\d+)[\\s:\\-]*\\s*(.*)$"); - - public static void main(String[] args) { - String content = "### Architecture Decision Records (ADR) - Full Set\n" + - "## Index by Category\n" + - "### Core & General Architecture\n" + - "- [ADR-0001: Core Technology Stack Selection](#adr-0001-core-technology-stack-selection)\n" + - "#### ADR-0001: Core Technology Stack Selection\n" + - "**Status:** Accepted\n" + - "#### ADR-0002: Monorepo Strategy\n" + - "**Status:** Accepted\n" + - "##### ADR-0003: Database Persistence & Evolution\n" + - "#### ADR-0004 No Separator\n" + - "#### ADR-0005 - Dash Separator\n" + - "#### ADR-0006 Double Space\n" + - "####ADR-0007 No Space after hashes\n" + - "#### ADR-0008:No Space after colon\n" + - "#### ADR-0009: Triple space after colon\n" + - " #### ADR-0010 leading spaces\n"; - - Matcher matcher = ADR_HEADER_PATTERN.matcher(content); - int count = 0; - while (matcher.find()) { - count++; - System.out.println("Match " + count + ":"); - System.out.println(" ID: " + matcher.group(1)); - System.out.println(" Title: " + matcher.group(2)); - } - - // Test with CRLF - System.out.println("\nTesting with CRLF:"); - String contentCRLF = content.replace("\n", "\r\n"); - matcher = ADR_HEADER_PATTERN.matcher(contentCRLF); - count = 0; - while (matcher.find()) { - count++; - System.out.println("Match " + count + ":"); - System.out.println(" ID: " + matcher.group(1)); - System.out.println(" Title: " + matcher.group(2)); - } - - // Test without start anchor ^ - System.out.println("\nTesting without start anchor ^:"); - Pattern noAnchor = Pattern.compile("(?i)\\s*#+\\s*(ADR-\\d+)[\\s:\\-]*\\s*(.*)"); - matcher = noAnchor.matcher(content); - count = 0; - while (matcher.find()) { - count++; - System.out.println("Match " + count + ":"); - System.out.println(" ID: " + matcher.group(1)); - System.out.println(" Title: " + matcher.group(2)); - } - } -} diff --git a/application_tests_output.txt b/application_tests_output.txt deleted file mode 100644 index 7c2635218..000000000 Binary files a/application_tests_output.txt and /dev/null differ diff --git a/build_output.txt b/build_output.txt deleted file mode 100644 index c83736189..000000000 Binary files a/build_output.txt and /dev/null differ diff --git a/critical_issues.txt b/critical_issues.txt deleted file mode 100644 index 398344f3d..000000000 Binary files a/critical_issues.txt and /dev/null differ diff --git a/dep-tree.txt b/dep-tree.txt deleted file mode 100644 index 61cb6b489..000000000 Binary files a/dep-tree.txt and /dev/null differ diff --git a/effective-pom.txt b/effective-pom.txt deleted file mode 100644 index c877b23ed..000000000 Binary files a/effective-pom.txt and /dev/null differ diff --git a/effective_pom.txt b/effective_pom.txt deleted file mode 100644 index 5ecc97d1d..000000000 Binary files a/effective_pom.txt and /dev/null differ diff --git a/expected.txt b/expected.txt deleted file mode 100644 index 527bbdcfb..000000000 Binary files a/expected.txt and /dev/null differ diff --git a/full_build_output.txt b/full_build_output.txt deleted file mode 100644 index 4e350ff45..000000000 Binary files a/full_build_output.txt and /dev/null differ diff --git a/monitoring-server/Dockerfile b/monitoring-server/Dockerfile deleted file mode 100644 index 762f58d7e..000000000 --- a/monitoring-server/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -# Stage 1: Build the Monitoring Server -FROM maven:3.9.9-eclipse-temurin-21-alpine AS build -WORKDIR /app - -COPY pom.xml . -COPY monitoring-server/pom.xml monitoring-server/ -COPY backend/pom.xml backend/ -COPY test-client/pom.xml test-client/ -COPY dependency-check-suppressions.xml . - -RUN --mount=type=cache,target=/root/.m2 \ - mvn -f monitoring-server/pom.xml dependency:go-offline dependency:resolve-plugins -B || true - -COPY monitoring-server/src monitoring-server/src - -RUN --mount=type=cache,target=/root/.m2 \ - mvn -f monitoring-server/pom.xml clean package -DskipTests -Dcheckstyle.skip -Ddependency-check.skip=true - -# Stage 2: Final runtime image -FROM eclipse-temurin:21-jre-alpine -# Update OS packages to fix security vulnerabilities -RUN apk update && apk upgrade --no-cache -RUN addgroup -S spring && adduser -S spring -G spring -WORKDIR /app -COPY --from=build /app/monitoring-server/target/monitoring-server-*.jar app.jar -EXPOSE 8081 -USER spring:spring -ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/monitoring-server/pom.xml b/monitoring-server/pom.xml deleted file mode 100644 index 4d0c60e58..000000000 --- a/monitoring-server/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - 4.0.0 - - ch.goodone.angularai - angularai-parent - 1.1.0 - ../pom.xml - - monitoring-server - 1.1.0 - monitoring-server - Spring Boot Admin Server for AngularAI - - - 21 - - - - - de.codecentric - spring-boot-admin-starter-server - ${spring-boot-admin.version} - - - de.codecentric - spring-boot-admin-starter-client - ${spring-boot-admin.version} - - - org.springframework.boot - spring-boot-starter-actuator - - - io.micrometer - micrometer-registry-prometheus - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.security - spring-security-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - build-info - - - - - - - - diff --git a/monitoring-server/src/main/java/ch/goodone/angularai/monitoring/MonitoringServerApplication.java b/monitoring-server/src/main/java/ch/goodone/angularai/monitoring/MonitoringServerApplication.java deleted file mode 100644 index c721c9f21..000000000 --- a/monitoring-server/src/main/java/ch/goodone/angularai/monitoring/MonitoringServerApplication.java +++ /dev/null @@ -1,38 +0,0 @@ -package ch.goodone.angularai.monitoring; - -import de.codecentric.boot.admin.server.config.EnableAdminServer; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository; -import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeRepository; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.web.SecurityFilterChain; -import org.springframework.context.annotation.Bean; - -@SpringBootApplication -@EnableAdminServer -public class MonitoringServerApplication { - - public static void main(String[] args) { - SpringApplication.run(MonitoringServerApplication.class, args); - } - - @Bean - public HttpExchangeRepository httpExchangeRepository() { - return new InMemoryHttpExchangeRepository(); - } - - @Configuration - @EnableWebSecurity - public static class SecurityConfig { - @Bean - @SuppressWarnings({"java:S112", "java:S1130"}) - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - http.authorizeHttpRequests(authorize -> authorize.anyRequest().permitAll()) - .csrf(csrf -> csrf.disable()); - return http.build(); - } - } -} diff --git a/monitoring-server/src/main/resources/application.properties b/monitoring-server/src/main/resources/application.properties deleted file mode 100644 index c901f3097..000000000 --- a/monitoring-server/src/main/resources/application.properties +++ /dev/null @@ -1,27 +0,0 @@ -spring.application.name=monitoring-server -server.port=8081 -# Allow all origins for simplicity in this demo monitoring setup -spring.boot.admin.ui.brand=AngularAI Monitoring - -application.version=1.1.0 -# SBA Metadata -spring.boot.admin.client.url=${SBA_URL:http://localhost:8081} -spring.boot.admin.client.instance.metadata.version=${application.version} -spring.boot.admin.client.instance.metadata.tags.environment=${SPRING_PROFILES_ACTIVE:dev} - -# Info contributors -management.info.env.enabled=true -management.info.build.enabled=true -management.info.java.enabled=true -management.info.os.enabled=true - -# Actuator Configuration -management.endpoints.web.exposure.include=health,info,metrics,prometheus,env,loggers,beans,configprops,mappings,threaddump,heapdump,httpexchanges - - - - - - - - diff --git a/monitoring-server/src/test/java/ch/goodone/angularai/monitoring/MonitoringServerApplicationTest.java b/monitoring-server/src/test/java/ch/goodone/angularai/monitoring/MonitoringServerApplicationTest.java deleted file mode 100644 index 21df0fb1d..000000000 --- a/monitoring-server/src/test/java/ch/goodone/angularai/monitoring/MonitoringServerApplicationTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package ch.goodone.angularai.monitoring; - -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.ApplicationContext; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest(properties = "spring.boot.admin.client.enabled=false") -class MonitoringServerApplicationTest { - - @Autowired - private ApplicationContext applicationContext; - - @Test - void contextLoads() { - assertThat(applicationContext).isNotNull(); - } - - @Test - void adminServerBeanIsPresent() { - // Checking if the admin server is enabled - assertThat(applicationContext.containsBean("adminServerMarker")).isTrue(); - } -} diff --git a/open_alerts.txt b/open_alerts.txt deleted file mode 100644 index 55acced0f..000000000 Binary files a/open_alerts.txt and /dev/null differ diff --git a/ordinals.txt b/ordinals.txt deleted file mode 100644 index 80a14c0ad..000000000 Binary files a/ordinals.txt and /dev/null differ diff --git a/refresh_sonar.ps1 b/refresh_sonar.ps1 deleted file mode 100644 index 5a1d1e0ad..000000000 --- a/refresh_sonar.ps1 +++ /dev/null @@ -1,16 +0,0 @@ -if (Test-Path ".env") { - $envFile = Get-Content ".env" - foreach ($line in $envFile) { - if ($line -match "^SONAR_TOKEN=(.+)$") { - $env:SONAR_TOKEN = $Matches[1] - break - } - } -} - -if (-not $env:SONAR_TOKEN) { - Write-Error "SONAR_TOKEN not found in .env" - exit 1 -} - -.\sonar\export-sonar-issues.ps1 diff --git a/root-effective-pom.txt b/root-effective-pom.txt deleted file mode 100644 index 8e2970534..000000000 Binary files a/root-effective-pom.txt and /dev/null differ diff --git a/sonar-issues.json b/sonar-issues.json deleted file mode 100644 index 4a3f97236..000000000 --- a/sonar-issues.json +++ /dev/null @@ -1 +0,0 @@ -{"total":26,"p":1,"ps":500,"paging":{"pageIndex":1,"pageSize":500,"total":26},"effortTotal":109,"debtTotal":109,"issues":[{"key":"AZzZHVq2EH4qK027mi9a","rule":"java:S1172","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/docs/ingest/MarkdownChunker.java","project":"JuergGood_angularai","line":103,"hash":"ffb225f59d11edd26d320fb12fa18398","textRange":{"startLine":103,"endLine":103,"startOffset":59,"endOffset":67},"flows":[{"locations":[{"component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/docs/ingest/MarkdownChunker.java","textRange":{"startLine":103,"endLine":103,"startOffset":86,"endOffset":99},"msg":"Parameter \"contentLength\""}]}],"status":"OPEN","message":"Remove these unused method parameters \"maxChars\", \"contentLength\".","effort":"5min","debt":"5min","author":"","tags":["cert","unused"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CLEAR","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9Z","rule":"java:S1172","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":280,"hash":"fe66c1474a81231bde00c5c2d4f1d271","textRange":{"startLine":280,"endLine":280,"startOffset":78,"endOffset":83},"flows":[],"status":"OPEN","message":"Remove this unused method parameter \"token\".","effort":"5min","debt":"5min","author":"","tags":["cert","unused"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CLEAR","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9T","rule":"java:S2629","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":283,"hash":"8b300fd2b3f46acfe83cfe7b78bd9bf8","textRange":{"startLine":283,"endLine":283,"startOffset":16,"endOffset":82},"flows":[{"locations":[{"component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","textRange":{"startLine":284,"endLine":284,"startOffset":16,"endOffset":61},"msg":"Invoke method(s) only conditionally."}]}],"status":"OPEN","message":"Invoke method(s) only conditionally.","effort":"5min","debt":"5min","author":"","tags":["performance"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"EFFICIENT","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9U","rule":"java:S2629","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":290,"hash":"3ce70a96e12ec3d706396807f01a843e","textRange":{"startLine":290,"endLine":290,"startOffset":16,"endOffset":61},"flows":[{"locations":[{"component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","textRange":{"startLine":291,"endLine":291,"startOffset":16,"endOffset":75},"msg":"Invoke method(s) only conditionally."}]}],"status":"OPEN","message":"Invoke method(s) only conditionally.","effort":"5min","debt":"5min","author":"","tags":["performance"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"EFFICIENT","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9V","rule":"java:S2629","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":297,"hash":"c16f90c8f5d65f7f4929240419ba1996","textRange":{"startLine":297,"endLine":297,"startOffset":74,"endOffset":113},"flows":[],"status":"OPEN","message":"Invoke method(s) only conditionally.","effort":"5min","debt":"5min","author":"","tags":["performance"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"EFFICIENT","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9W","rule":"java:S2629","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":315,"hash":"24ec212a1e25d88756cec1742673a3f4","textRange":{"startLine":315,"endLine":315,"startOffset":132,"endOffset":169},"flows":[],"status":"OPEN","message":"Invoke method(s) only conditionally.","effort":"5min","debt":"5min","author":"","tags":["performance"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"EFFICIENT","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9X","rule":"java:S2629","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":319,"hash":"9fbb9577ed153943b5b8aadb1b9e26c9","textRange":{"startLine":319,"endLine":319,"startOffset":131,"endOffset":168},"flows":[],"status":"OPEN","message":"Invoke method(s) only conditionally.","effort":"5min","debt":"5min","author":"","tags":["performance"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"EFFICIENT","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVooEH4qK027mi9Y","rule":"java:S2629","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","project":"JuergGood_angularai","line":321,"hash":"c835033c59e19e6672ed475da84306b4","textRange":{"startLine":321,"endLine":321,"startOffset":90,"endOffset":127},"flows":[],"status":"OPEN","message":"Invoke method(s) only conditionally.","effort":"5min","debt":"5min","author":"","tags":["performance"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"EFFICIENT","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzZHVoFEH4qK027mi9S","rule":"java:S1854","severity":"MAJOR","component":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/TaskParserService.java","project":"JuergGood_angularai","line":280,"hash":"0f283e626f8b71a5a963c2f8a8813bda","textRange":{"startLine":280,"endLine":280,"startOffset":30,"endOffset":34},"flows":[],"status":"OPEN","message":"Remove this useless assignment to local variable \"tagKeywordIdx\".","effort":"1min","debt":"1min","author":"","tags":["cert","cwe","unused"],"creationDate":"2026-03-10T18:57:08+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"LOGICAL","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZzSwvhBkz7ky6K7gyhH","rule":"css:S7924","severity":"MAJOR","component":"JuergGood_angularai:frontend/src/app/components/adr-drift/adr-viewer-dialog.component.css","project":"JuergGood_angularai","line":81,"hash":"b0649b1e1640ae07d0216db7cb9f7ba8","textRange":{"startLine":81,"endLine":81,"startOffset":0,"endOffset":17},"flows":[],"status":"OPEN","message":"Text does not meet the minimal contrast requirement with its background.","effort":"5min","debt":"5min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["accessibility","contrast","css","wcag"],"creationDate":"2026-03-08T17:26:12+0000","updateDate":"2026-03-09T13:20:26+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxoSLyeSm898HwP_JIB","rule":"typescript:S1874","severity":"MINOR","component":"JuergGood_angularai:frontend/src/app/app.config.ts","project":"JuergGood_angularai","line":32,"hash":"d1797e4295616414e92b83b5a76a582c","textRange":{"startLine":32,"endLine":32,"startOffset":4,"endOffset":21},"flows":[],"status":"OPEN","message":"The signature \u0027(): Provider[]\u0027 of \u0027provideAnimations\u0027 is deprecated.","effort":"15min","debt":"15min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["cwe","obsolete","type-dependent"],"creationDate":"2026-02-16T21:07:45+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9a8","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"2d55caa8e27355b0dad55aaf09f78621","textRange":{"startLine":17,"endLine":17,"startOffset":23,"endOffset":29},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-02-09T22:44:35+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9a_","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"4f9560fee3d0817557f572a1064921c8","textRange":{"startLine":26,"endLine":26,"startOffset":8,"endOffset":14},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-02-09T22:44:35+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9bB","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"2d55caa8e27355b0dad55aaf09f78621","textRange":{"startLine":34,"endLine":34,"startOffset":25,"endOffset":31},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-02-09T22:44:35+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFchixv-IQC_v9bO","rule":"css:S4666","severity":"MAJOR","component":"JuergGood_angularai:frontend/src/styles.css","project":"JuergGood_angularai","hash":"f7eb2753e085011e55f0c6dc932bf7e5","textRange":{"startLine":550,"endLine":550,"startOffset":0,"endOffset":45},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Unexpected duplicate selector \"body.theme-dark .mat-expansion-panel-header\", first used at line 541","effort":"1min","debt":"1min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-02-08T08:11:16+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"LOGICAL","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFchixv-IQC_v9bM","rule":"css:S4666","severity":"MAJOR","component":"JuergGood_angularai:frontend/src/styles.css","project":"JuergGood_angularai","hash":"5dbb5eb0d4d84deec3eb8d0ec243a70d","textRange":{"startLine":136,"endLine":136,"startOffset":0,"endOffset":54},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary\", first used at line 131","effort":"1min","debt":"1min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-02-07T13:23:20+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"LOGICAL","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFchixv-IQC_v9bN","rule":"css:S4666","severity":"MAJOR","component":"JuergGood_angularai:frontend/src/styles.css","project":"JuergGood_angularai","hash":"88c41757803fcc0df0421daa097a8547","textRange":{"startLine":174,"endLine":174,"startOffset":0,"endOffset":63},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Unexpected duplicate selector \"html body.theme-dark .mat-mdc-button-base.mat-primary:disabled\", first used at line 164","effort":"1min","debt":"1min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-02-07T13:23:20+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"LOGICAL","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9bA","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"98ab68f7f3e793f1930d163fa0384f7c","textRange":{"startLine":28,"endLine":28,"startOffset":54,"endOffset":60},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-02-03T22:13:41+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9bD","rule":"javascript:S1226","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"471f638cd7021e8f77dc24d634b58784","textRange":{"startLine":37,"endLine":37,"startOffset":8,"endOffset":28},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Introduce a new variable or use its initial value before reassigning \"t\".","effort":"5min","debt":"5min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-02-01T16:03:28+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"BUG","organization":"juerggood","cleanCodeAttribute":"CLEAR","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"RELIABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9bE","rule":"javascript:S1226","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"27b7dda992563b634502fd00c688e436","textRange":{"startLine":38,"endLine":38,"startOffset":8,"endOffset":38},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Introduce a new variable or use its initial value before reassigning \"y\".","effort":"5min","debt":"5min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-02-01T16:03:28+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"BUG","organization":"juerggood","cleanCodeAttribute":"CLEAR","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"RELIABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9bF","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"6ba5bffb92dd4bdaf43841e0d36a8d76","textRange":{"startLine":39,"endLine":39,"startOffset":7,"endOffset":13},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-02-01T16:03:28+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFchixv-IQC_v9bL","rule":"css:S4657","severity":"CRITICAL","component":"JuergGood_angularai:frontend/src/styles.css","project":"JuergGood_angularai","hash":"b6b3e09dfa5ddf3ecba5e620758a6e71","textRange":{"startLine":315,"endLine":315,"startOffset":0,"endOffset":37},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Unexpected shorthand \"background\" after \"background-color\"","effort":"5min","debt":"5min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-01-22T23:34:17+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"BUG","organization":"juerggood","cleanCodeAttribute":"LOGICAL","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"RELIABILITY","severity":"HIGH"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFchixv-IQC_v9bP","rule":"css:S4666","severity":"MAJOR","component":"JuergGood_angularai:frontend/src/styles.css","project":"JuergGood_angularai","hash":"78498f77ee1ca6c84e5d6e211da7f528","textRange":{"startLine":709,"endLine":709,"startOffset":0,"endOffset":17},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Unexpected duplicate selector \"body.theme-dark\", first used at line 611","effort":"1min","debt":"1min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":[],"creationDate":"2026-01-22T23:34:17+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"LOGICAL","cleanCodeAttributeCategory":"INTENTIONAL","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"MEDIUM"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9a-","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"1f54e742240c303fb82f8ad1b6f95d34","textRange":{"startLine":24,"endLine":24,"startOffset":27,"endOffset":33},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-01-22T21:48:29+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFb4ixv-IQC_v9a9","rule":"javascript:S7764","severity":"MINOR","component":"JuergGood_angularai:frontend/src/index.html","project":"JuergGood_angularai","hash":"1f54e742240c303fb82f8ad1b6f95d34","textRange":{"startLine":24,"endLine":24,"startOffset":8,"endOffset":14},"flows":[],"resolution":"REMOVED","status":"CLOSED","message":"Prefer `globalThis` over `window`.","effort":"2min","debt":"2min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["es2020","portability"],"creationDate":"2026-01-22T21:48:29+0000","updateDate":"2026-02-16T19:23:00+0000","closeDate":"2026-02-16T19:23:00+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]},{"key":"AZxjQFafixv-IQC_v9ay","rule":"typescript:S1874","severity":"MINOR","component":"JuergGood_angularai:frontend/src/app/app.config.ts","project":"JuergGood_angularai","line":4,"hash":"b0b7d0e2941bc07c4179d42d9bd42f29","textRange":{"startLine":4,"endLine":4,"startOffset":9,"endOffset":26},"flows":[],"status":"OPEN","message":"\u0027provideAnimations\u0027 is deprecated.","effort":"15min","debt":"15min","assignee":"JuergGood-0OBYU@github","author":"sub@goodfamily.ch","tags":["cwe","obsolete","type-dependent"],"creationDate":"2026-01-02T17:20:54+0000","updateDate":"2026-03-10T18:57:08+0000","type":"CODE_SMELL","organization":"juerggood","cleanCodeAttribute":"CONVENTIONAL","cleanCodeAttributeCategory":"CONSISTENT","impacts":[{"softwareQuality":"MAINTAINABILITY","severity":"LOW"}],"issueStatus":"OPEN","projectName":"angularai-parent","internalTags":[]}],"components":[{"organization":"juerggood","key":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/docs/ingest/MarkdownChunker.java","uuid":"AZzSwu-Ekz7ky6K7gyfb","enabled":true,"qualifier":"FIL","name":"MarkdownChunker.java","longName":"backend/src/main/java/ch/goodone/angularai/backend/docs/ingest/MarkdownChunker.java","path":"backend/src/main/java/ch/goodone/angularai/backend/docs/ingest/MarkdownChunker.java"},{"organization":"juerggood","key":"JuergGood_angularai","uuid":"AZvFz7Ixlt9MKUCnZ3rs","enabled":true,"qualifier":"TRK","name":"angularai-parent","longName":"angularai-parent"},{"organization":"juerggood","key":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/TaskParserService.java","uuid":"AZvrXqbRjfjrJUaOvisu","enabled":true,"qualifier":"FIL","name":"TaskParserService.java","longName":"backend/src/main/java/ch/goodone/angularai/backend/service/TaskParserService.java","path":"backend/src/main/java/ch/goodone/angularai/backend/service/TaskParserService.java"},{"organization":"juerggood","key":"JuergGood_angularai:frontend/src/index.html","uuid":"AZxjQErTixv-IQC_v9W-","enabled":true,"qualifier":"FIL","name":"index.html","longName":"frontend/src/index.html","path":"frontend/src/index.html"},{"organization":"juerggood","key":"JuergGood_angularai:frontend/src/app/components/adr-drift/adr-viewer-dialog.component.css","uuid":"AZzSwu-Dkz7ky6K7gydI","enabled":true,"qualifier":"FIL","name":"adr-viewer-dialog.component.css","longName":"frontend/src/app/components/adr-drift/adr-viewer-dialog.component.css","path":"frontend/src/app/components/adr-drift/adr-viewer-dialog.component.css"},{"organization":"juerggood","key":"JuergGood_angularai:frontend/src/app/app.config.ts","uuid":"AZxjQErTixv-IQC_v9W0","enabled":true,"qualifier":"FIL","name":"app.config.ts","longName":"frontend/src/app/app.config.ts","path":"frontend/src/app/app.config.ts"},{"organization":"juerggood","key":"JuergGood_angularai:frontend/src/styles.css","uuid":"AZxjQErTixv-IQC_v9XA","enabled":true,"qualifier":"FIL","name":"styles.css","longName":"frontend/src/styles.css","path":"frontend/src/styles.css"},{"organization":"juerggood","key":"JuergGood_angularai:backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","uuid":"AZwIlJF0QTXpKtRlKIIr","enabled":true,"qualifier":"FIL","name":"CaptchaService.java","longName":"backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java","path":"backend/src/main/java/ch/goodone/angularai/backend/service/CaptchaService.java"}],"organizations":[{"key":"juerggood","name":"JuergGood"}],"facets":[]} \ No newline at end of file diff --git a/test-results/.last-run.json b/test-results/.last-run.json deleted file mode 100644 index 5fca3f84b..000000000 --- a/test-results/.last-run.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "status": "failed", - "failedTests": [] -} \ No newline at end of file diff --git a/update_statuses.ps1 b/update_statuses.ps1 deleted file mode 100644 index e3e060ca2..000000000 --- a/update_statuses.ps1 +++ /dev/null @@ -1,24 +0,0 @@ -$jsonPath = "sonar\.sonar-export\sonar-issues-enriched.json" -$issuesDir = "sonar\.sonar-export\issues" - -$json = Get-Content -Raw $jsonPath | ConvertFrom-Json -$toFix = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 26) - -foreach ($item in $json) { - if ($toFix -contains $item.ordinal) { - $item.status = "FIXED" - - # Also update the individual file - $pattern = "issue-" + $item.ordinal.ToString("000") + "*.json" - $files = Get-ChildItem -Path $issuesDir -Filter $pattern - foreach ($file in $files) { - $content = Get-Content -Raw $file.FullName - # Use regex replace to handle possible space variations - $content = $content -replace '"status":\s*"OPEN"', '"status": "FIXED"' - $content | Set-Content $file.FullName - } - } -} - -$json | ConvertTo-Json -Depth 10 | Set-Content $jsonPath -Write-Host "Updated 12 issues to FIXED status."