argus-alm 0.15.5__tar.gz → 0.15.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. argus_alm-0.15.7/AGENTS.md +27 -0
  2. {argus_alm-0.15.5 → argus_alm-0.15.7}/Dockerfile +2 -2
  3. {argus_alm-0.15.5 → argus_alm-0.15.7}/PKG-INFO +7 -2
  4. {argus_alm-0.15.5 → argus_alm-0.15.7}/README.md +5 -1
  5. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/_version.py +16 -3
  6. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/base.py +5 -8
  7. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/sct/client.py +13 -1
  8. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/common/enums.py +1 -0
  9. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/common/sct_types.py +15 -0
  10. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_alm.egg-info/PKG-INFO +7 -2
  11. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_alm.egg-info/SOURCES.txt +5 -1
  12. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_alm.egg-info/requires.txt +1 -0
  13. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_backend.py +28 -1
  14. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_web.example.yaml +1 -1
  15. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/dev-setup.md +1 -1
  16. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/AdminPanel.svelte +8 -6
  17. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/BatchTestMover.svelte +5 -6
  18. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/GroupCreator.svelte +16 -6
  19. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ReleaseCreator.svelte +9 -5
  20. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +5 -5
  21. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ReleaseEditor.svelte +6 -6
  22. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ReleaseManager.svelte +23 -23
  23. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ReleaseManagerGroup.svelte +20 -19
  24. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ReleaseManagerTest.svelte +14 -13
  25. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/TestCreator.svelte +17 -9
  26. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/UserManager.svelte +81 -67
  27. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ViewListItem.svelte +8 -8
  28. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ViewSelectItem.svelte +14 -5
  29. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ViewWidget.svelte +53 -17
  30. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/ViewsManager.svelte +74 -34
  31. argus_alm-0.15.7/frontend/Alert.js +11 -0
  32. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Alerts/AlertMessage.svelte +4 -4
  33. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Alerts/AlertWidget.svelte +8 -8
  34. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/AssigneeSelector.svelte +13 -5
  35. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/ModalWindow.svelte +15 -8
  36. argus_alm-0.15.7/frontend/Common/SelectUtils.js +14 -0
  37. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/TestStatus.js +16 -0
  38. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/ViewTypes.js +16 -0
  39. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Debug/FlashDebugComponent.svelte +2 -2
  40. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Discussion/Comment.svelte +24 -15
  41. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Discussion/CommentEditor.svelte +40 -27
  42. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Discussion/MentionSelector.svelte +14 -7
  43. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Discussion/UserProfile.svelte +3 -3
  44. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Github/GithubIssue.svelte +30 -17
  45. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Github/GithubIssues.svelte +45 -29
  46. argus_alm-0.15.7/frontend/Github/GithubIssuesCopyModal.svelte +126 -0
  47. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/JobsList.svelte +10 -10
  48. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/Login.svelte +7 -44
  49. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/Notification.svelte +10 -5
  50. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/NotificationCommentWrapper.svelte +7 -7
  51. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/NotificationCounter.svelte +1 -1
  52. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/NotificationSender.svelte +2 -2
  53. argus_alm-0.15.7/frontend/Profile/NotificationTestRunWrapper.svelte +7 -0
  54. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/NotificationsReader.svelte +9 -9
  55. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/PlannedJob.svelte +7 -3
  56. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/PlannedJobs.svelte +12 -8
  57. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/ProfileJob.svelte +11 -7
  58. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/ProfileJobs.svelte +14 -13
  59. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/ProfileJobsTab.svelte +26 -19
  60. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/ProfileSchedules.svelte +2 -2
  61. argus_alm-0.15.7/frontend/Profile/User.svelte +41 -0
  62. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/UserSelection.svelte +2 -2
  63. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Profile/ViewUserResolver.svelte +6 -2
  64. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/AssigneeFilter.svelte +24 -11
  65. argus_alm-0.15.7/frontend/ReleaseDashboard/FlatViewHelper.svelte +13 -0
  66. argus_alm-0.15.7/frontend/ReleaseDashboard/GroupedViewHelper.svelte +11 -0
  67. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/ReleaseActivity.svelte +17 -13
  68. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +7 -7
  69. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +11 -7
  70. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/TestDashboard.svelte +65 -43
  71. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +7 -5
  72. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +25 -11
  73. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/TestDashboardTest.svelte +31 -14
  74. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +23 -13
  75. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +3 -4
  76. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/CommentTableRow.svelte +20 -10
  77. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/DutyPlanner.svelte +23 -15
  78. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/EntityReplacer.svelte +23 -15
  79. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlan.svelte +22 -14
  80. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +23 -19
  81. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +81 -45
  82. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +46 -35
  83. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlanTable.svelte +21 -15
  84. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlanner.svelte +105 -78
  85. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +36 -25
  86. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ReleaseScheduler.svelte +13 -10
  87. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/Schedule.svelte +10 -3
  88. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/ScheduleTable.svelte +20 -14
  89. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/ReleasePlanner/SearchBar.svelte +23 -10
  90. argus_alm-0.15.7/frontend/Stats/ChartStats.svelte +51 -0
  91. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stats/NumberStats.svelte +25 -13
  92. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stats/ProgressBarStats.svelte +6 -6
  93. argus_alm-0.15.7/frontend/Stats/ReleaseStats.svelte +54 -0
  94. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stats/StatsFetcher.svelte +3 -4
  95. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamCreateForm.svelte +17 -8
  96. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamDetail.svelte +29 -18
  97. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamList.svelte +7 -3
  98. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamManager.svelte +8 -4
  99. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamMember.svelte +13 -9
  100. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamShort.svelte +12 -8
  101. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/ActivityTab.svelte +16 -8
  102. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/ArtifactRow.svelte +9 -5
  103. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/ArtifactTab.svelte +49 -11
  104. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Components/Cell.svelte +9 -5
  105. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Components/Filters.svelte +14 -10
  106. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Components/GraphFilters.svelte +24 -16
  107. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Components/ResultTable.svelte +50 -44
  108. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Components/ScreenshotModal.svelte +7 -3
  109. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/DriverMatrixBreakdown.svelte +13 -9
  110. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/DriverMatrixRunInfo.svelte +6 -7
  111. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/DriverMatrixTestCollection.svelte +6 -2
  112. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/DriverMatrixTestRun.svelte +31 -22
  113. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/DriverMatrixTestSuites.svelte +2 -0
  114. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/EventsTab.svelte +218 -60
  115. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Generic/GenericTestRun.svelte +38 -28
  116. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +7 -5
  117. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/HeartbeatIndicator.svelte +14 -10
  118. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/IssueTab.svelte +5 -6
  119. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/IssueTemplate.svelte +50 -35
  120. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +8 -4
  121. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +6 -2
  122. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +10 -10
  123. argus_alm-0.15.7/frontend/TestRun/Jenkins/CheckParam.svelte +8 -0
  124. argus_alm-0.15.7/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +15 -0
  125. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/CloneSuccess.svelte +7 -5
  126. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +19 -25
  127. argus_alm-0.15.7/frontend/TestRun/Jenkins/DummyCheckParam.svelte +11 -0
  128. argus_alm-0.15.7/frontend/TestRun/Jenkins/DummySelectParam.svelte +11 -0
  129. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +9 -9
  130. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +17 -13
  131. argus_alm-0.15.7/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +14 -0
  132. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/ModalError.svelte +6 -4
  133. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +6 -2
  134. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/ParameterEditor.svelte +16 -11
  135. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +15 -8
  136. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/SelectParam.svelte +3 -5
  137. argus_alm-0.15.7/frontend/TestRun/Jenkins/StringParam.svelte +5 -0
  138. argus_alm-0.15.7/frontend/TestRun/Jenkins/TextParam.svelte +5 -0
  139. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/NemesisData.svelte +3 -3
  140. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/NemesisReason.svelte +2 -2
  141. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/NemesisTable.svelte +89 -88
  142. argus_alm-0.15.7/frontend/TestRun/PackagesInfo.svelte +209 -0
  143. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Pytest/DtestTab.svelte +3 -3
  144. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Pytest/PytestItem.svelte +14 -8
  145. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Pytest/PytestRun.svelte +24 -18
  146. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Pytest/PytestTab.svelte +3 -3
  147. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/RawEvent.svelte +2 -3
  148. argus_alm-0.15.7/frontend/TestRun/ResourcesInfo.svelte +416 -0
  149. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/ResultsGraph.svelte +61 -40
  150. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/ResultsGraphs.svelte +41 -34
  151. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/ResultsTab.svelte +18 -14
  152. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/RunAssigneeSelector.svelte +29 -14
  153. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/RunInvestigationStatusButton.svelte +4 -4
  154. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/RunStatusButton.svelte +5 -5
  155. argus_alm-0.15.7/frontend/TestRun/SCT/SctEvent.svelte +209 -0
  156. argus_alm-0.15.7/frontend/TestRun/SCT/SctEvents.svelte +314 -0
  157. argus_alm-0.15.7/frontend/TestRun/SCT/SctNemesis.svelte +84 -0
  158. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +3 -3
  159. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +2 -2
  160. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +13 -11
  161. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +2 -2
  162. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Screenshots.svelte +6 -8
  163. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +7 -7
  164. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +11 -7
  165. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +15 -12
  166. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +31 -22
  167. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/StructuredEvent.svelte +137 -101
  168. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/TestRun.svelte +81 -41
  169. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/TestRunComments.svelte +14 -11
  170. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/TestRunInfo.svelte +40 -24
  171. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/jUnitChart.svelte +4 -4
  172. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/jUnitResults.svelte +2 -2
  173. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Utils/IntersectionObserver.svelte +21 -9
  174. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/ViewDashboard.svelte +22 -11
  175. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/ViewSelect.svelte +14 -5
  176. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +8 -9
  177. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +8 -9
  178. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +8 -11
  179. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +10 -11
  180. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/WidgetSettingTypes/StringValue.svelte +8 -9
  181. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +18 -14
  182. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +15 -9
  183. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +8 -3
  184. argus_alm-0.15.7/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +17 -0
  185. argus_alm-0.15.7/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +29 -0
  186. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +17 -11
  187. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +22 -14
  188. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +36 -22
  189. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +5 -6
  190. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +28 -22
  191. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGithubIssues.svelte +11 -9
  192. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +13 -5
  193. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +11 -7
  194. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +5 -1
  195. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +5 -1
  196. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +8 -4
  197. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +45 -39
  198. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +7 -3
  199. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +5 -1
  200. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +5 -1
  201. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +16 -8
  202. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats.svelte +108 -128
  203. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +19 -15
  204. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +19 -9
  205. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +12 -14
  206. argus_alm-0.15.7/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +699 -0
  207. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewNemesisStats.svelte +54 -53
  208. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewReleaseStats.svelte +3 -3
  209. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewTestDashboard.svelte +10 -8
  210. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/AssigneeList.svelte +14 -6
  211. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/JobConfigureModal.svelte +10 -11
  212. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/RunGroup.svelte +32 -20
  213. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/RunRelease.svelte +22 -18
  214. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/Test.svelte +20 -10
  215. argus_alm-0.15.7/frontend/WorkArea/TestRunDispatcher.svelte +15 -0
  216. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/TestRuns.svelte +48 -28
  217. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/TestRunsMessage.svelte +3 -3
  218. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/TestRunsPanel.svelte +24 -12
  219. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/TestRunsSelector.svelte +20 -18
  220. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/UnknownTest.svelte +4 -6
  221. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/WorkArea/WorkArea.svelte +5 -5
  222. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/admin-panel.js +2 -1
  223. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/argus.css +2 -2
  224. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/argus.js +1 -0
  225. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/duty-planner.js +2 -1
  226. argus_alm-0.15.7/frontend/flashDebug.js +9 -0
  227. argus_alm-0.15.7/frontend/font-awesome.css +1 -0
  228. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/login.js +2 -2
  229. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/notification-counter.js +5 -4
  230. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/plan.js +2 -1
  231. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/profile-jobs.js +2 -1
  232. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/profile-notifications.js +2 -1
  233. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/profile-schedules.js +2 -1
  234. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/release-dashboard.js +2 -1
  235. argus_alm-0.15.7/frontend/release-page.js +16 -0
  236. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/release-planner.js +2 -1
  237. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/release-scheduler.js +2 -1
  238. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/run-by-plugin.js +2 -1
  239. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/teams.js +2 -1
  240. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/test-run-details.js +2 -1
  241. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/test-runs-breakout.js +2 -1
  242. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/test-runs-standalone.js +2 -1
  243. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/view-dashboard.js +2 -1
  244. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/view-user-resolver.js +7 -6
  245. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/work-area.js +2 -1
  246. argus_alm-0.15.7/package.json +66 -0
  247. {argus_alm-0.15.5 → argus_alm-0.15.7}/pyproject.toml +1 -0
  248. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/pyproject.toml +1 -2
  249. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/pytest_argus_reporter.py +2 -1
  250. argus_alm-0.15.7/rollup.config.js +67 -0
  251. {argus_alm-0.15.5 → argus_alm-0.15.7}/start_argus.sh +5 -0
  252. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/admin/index.html.j2 +1 -1
  253. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/auth/login.html.j2 +1 -1
  254. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/base.html.j2 +4 -6
  255. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/dashboard.html.j2 +1 -1
  256. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/duty_planner.html.j2 +1 -1
  257. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/plan_dashboard.html.j2 +1 -1
  258. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/profile_jobs.html.j2 +1 -1
  259. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/profile_notifications.html.j2 +1 -1
  260. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/profile_schedules.html.j2 +1 -1
  261. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/release_dashboard.html.j2 +1 -1
  262. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/release_planner.html.j2 +1 -1
  263. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/release_schedule.html.j2 +1 -1
  264. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/releases.html.j2 +1 -1
  265. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/run_view_by_plugin.html.j2 +1 -1
  266. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/standalone_test_with_runs.html.j2 +1 -1
  267. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/teams.html.j2 +1 -1
  268. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/test_run.html.j2 +1 -1
  269. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/test_runs.html.j2 +1 -1
  270. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/view_dashboard.html.j2 +1 -1
  271. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/views.html.j2 +1 -1
  272. {argus_alm-0.15.5 → argus_alm-0.15.7}/tsconfig.json +2 -2
  273. {argus_alm-0.15.5 → argus_alm-0.15.7}/uv.lock +25 -1
  274. {argus_alm-0.15.5 → argus_alm-0.15.7}/uwsgi.ini +1 -0
  275. argus_alm-0.15.7/yarn.lock +2508 -0
  276. argus_alm-0.15.5/frontend/Alert.js +0 -10
  277. argus_alm-0.15.5/frontend/Common/SelectUtils.js +0 -3
  278. argus_alm-0.15.5/frontend/Github/GithubIssuesCopyModal.svelte +0 -109
  279. argus_alm-0.15.5/frontend/Profile/NotificationTestRunWrapper.svelte +0 -7
  280. argus_alm-0.15.5/frontend/Profile/User.svelte +0 -61
  281. argus_alm-0.15.5/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -5
  282. argus_alm-0.15.5/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -3
  283. argus_alm-0.15.5/frontend/Stats/ChartStats.svelte +0 -43
  284. argus_alm-0.15.5/frontend/Stats/ReleaseStats.svelte +0 -39
  285. argus_alm-0.15.5/frontend/TestRun/Jenkins/CheckParam.svelte +0 -9
  286. argus_alm-0.15.5/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -17
  287. argus_alm-0.15.5/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -13
  288. argus_alm-0.15.5/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -13
  289. argus_alm-0.15.5/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -10
  290. argus_alm-0.15.5/frontend/TestRun/Jenkins/StringParam.svelte +0 -7
  291. argus_alm-0.15.5/frontend/TestRun/Jenkins/TextParam.svelte +0 -7
  292. argus_alm-0.15.5/frontend/TestRun/PackagesInfo.svelte +0 -194
  293. argus_alm-0.15.5/frontend/TestRun/ResourcesInfo.svelte +0 -416
  294. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +0 -12
  295. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +0 -22
  296. argus_alm-0.15.5/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +0 -439
  297. argus_alm-0.15.5/frontend/WorkArea/TestRunDispatcher.svelte +0 -11
  298. argus_alm-0.15.5/frontend/flashDebug.js +0 -8
  299. argus_alm-0.15.5/frontend/font-awesome.css +0 -1
  300. argus_alm-0.15.5/frontend/release-page.js +0 -15
  301. argus_alm-0.15.5/package.json +0 -60
  302. argus_alm-0.15.5/webpack.config.js +0 -148
  303. argus_alm-0.15.5/yarn.lock +0 -2218
  304. {argus_alm-0.15.5 → argus_alm-0.15.7}/.dockerignore +0 -0
  305. {argus_alm-0.15.5 → argus_alm-0.15.7}/.envrc +0 -0
  306. {argus_alm-0.15.5 → argus_alm-0.15.7}/.eslintrc.js +0 -0
  307. {argus_alm-0.15.5 → argus_alm-0.15.7}/.github/workflows/.gitkeep +0 -0
  308. {argus_alm-0.15.5 → argus_alm-0.15.7}/.github/workflows/lint.yml +0 -0
  309. {argus_alm-0.15.5 → argus_alm-0.15.7}/.github/workflows/release.yml +0 -0
  310. {argus_alm-0.15.5 → argus_alm-0.15.7}/.github/workflows/test.yml +0 -0
  311. {argus_alm-0.15.5 → argus_alm-0.15.7}/.gitignore +0 -0
  312. {argus_alm-0.15.5 → argus_alm-0.15.7}/.pre-commit-config.yaml +0 -0
  313. {argus_alm-0.15.5 → argus_alm-0.15.7}/.prettierrc.js +0 -0
  314. {argus_alm-0.15.5 → argus_alm-0.15.7}/LICENSE +0 -0
  315. {argus_alm-0.15.5 → argus_alm-0.15.7}/MANIFEST.in +0 -0
  316. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/__init__.py +0 -0
  317. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/__init__.py +0 -0
  318. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/driver_matrix_tests/cli.py +0 -0
  319. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/driver_matrix_tests/client.py +0 -0
  320. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/generic/cli.py +0 -0
  321. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/generic/client.py +0 -0
  322. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/generic_result.py +0 -0
  323. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/sct/types.py +0 -0
  324. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/client/sirenada/client.py +0 -0
  325. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/common/__init__.py +0 -0
  326. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus/common/sirenada_types.py +0 -0
  327. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus.yaml +0 -0
  328. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/README.md +0 -0
  329. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/deployment/argusai_event_similarity_processor.service +0 -0
  330. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/event_similarity_processor.py +0 -0
  331. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/logs/.gitignore +0 -0
  332. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/pyproject.toml +0 -0
  333. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/utils/__init__.py +0 -0
  334. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/utils/event_message_sanitizer.py +0 -0
  335. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/utils/scylla_connection.py +0 -0
  336. {argus_alm-0.15.5 → argus_alm-0.15.7}/argusAI/uv.lock +0 -0
  337. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_alm.egg-info/dependency_links.txt +0 -0
  338. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_alm.egg-info/entry_points.txt +0 -0
  339. {argus_alm-0.15.5 → argus_alm-0.15.7}/argus_alm.egg-info/top_level.txt +0 -0
  340. {argus_alm-0.15.5 → argus_alm-0.15.7}/commitlint.config.js +0 -0
  341. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/.gitignore +0 -0
  342. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
  343. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/alpha-config/machine_image_configured +0 -0
  344. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/alpha-config/scylla.yaml +0 -0
  345. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/alpha-data/.gitignore +0 -0
  346. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/docker-compose.yaml +0 -0
  347. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/export_data.py +0 -0
  348. {argus_alm-0.15.5 → argus_alm-0.15.7}/dev-db/import_data.py +0 -0
  349. {argus_alm-0.15.5 → argus_alm-0.15.7}/docker/config/nginx-docker.conf +0 -0
  350. {argus_alm-0.15.5 → argus_alm-0.15.7}/docker/config/supervisord.conf +0 -0
  351. {argus_alm-0.15.5 → argus_alm-0.15.7}/docker-entrypoint.sh +0 -0
  352. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/api_usage.md +0 -0
  353. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/argus_status_page.md +0 -0
  354. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/argus_status_page_diagram.jpg +0 -0
  355. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/config/argus.nginx.conf +0 -0
  356. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/config/argus.service +0 -0
  357. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/generic_results.md +0 -0
  358. {argus_alm-0.15.5 → argus_alm-0.15.7}/docs/pypi-guide.md +0 -0
  359. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
  360. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/ApiUtils.js +0 -0
  361. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/ArgusNotification.ts +0 -0
  362. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/AssigneeUtils.js +0 -0
  363. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/DateUtils.js +0 -0
  364. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/DriverMatrixTypes.ts +0 -0
  365. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/IssueDestinations.js +0 -0
  366. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/JenkinsSettingsHelp.js +0 -0
  367. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/PluginDispatch.js +0 -0
  368. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/PluginNames.js +0 -0
  369. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/RunUtils.js +0 -0
  370. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/StateManagement.js +0 -0
  371. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/TextUtils.js +0 -0
  372. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/UserTypes.ts +0 -0
  373. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Common/UserUtils.js +0 -0
  374. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Discussion/MarkedMentionExtension.js +0 -0
  375. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stores/AlertStore.js +0 -0
  376. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stores/AssigneeSubscriber.js +0 -0
  377. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
  378. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stores/TestRunsSubscriber.js +0 -0
  379. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stores/UserlistSubscriber.js +0 -0
  380. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Stores/WorkspaceStore.js +0 -0
  381. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Teams/TeamUtils.ts +0 -0
  382. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Generic/Subtest.js +0 -0
  383. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/Build.js +0 -0
  384. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
  385. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Pytest/index.js +0 -0
  386. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/Pytest/types.ts +0 -0
  387. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
  388. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
  389. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
  390. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/font-awesome.js +0 -0
  391. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/fonts/NotoSans-Bold.ttf +0 -0
  392. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
  393. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/fonts/NotoSans-Italic.ttf +0 -0
  394. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/fonts/NotoSans-Regular.ttf +0 -0
  395. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/fonts/OFL.txt +0 -0
  396. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/fonts/noto.css +0 -0
  397. {argus_alm-0.15.5 → argus_alm-0.15.7}/frontend/markdownOptions.js +0 -0
  398. {argus_alm-0.15.5 → argus_alm-0.15.7}/profile/.gitkeep +0 -0
  399. {argus_alm-0.15.5 → argus_alm-0.15.7}/public/argus.png +0 -0
  400. {argus_alm-0.15.5 → argus_alm-0.15.7}/public/no-user-picture.png +0 -0
  401. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/.envrc +0 -0
  402. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/LICENSE +0 -0
  403. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/MANIFEST.in +0 -0
  404. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/README.md +0 -0
  405. {argus_alm-0.15.5 → argus_alm-0.15.7}/pytest-argus-reporter/noxfile.py +0 -0
  406. {argus_alm-0.15.5 → argus_alm-0.15.7}/run_with_profiler.py +0 -0
  407. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/argus-status-page/index.html +0 -0
  408. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/argus-status-page/js/status.js +0 -0
  409. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/argus-status-page/static/app.css +0 -0
  410. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/argus-status-page/static/argus.png +0 -0
  411. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/argus-status-page/static/scylla.png +0 -0
  412. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/argus-status-page/status.json +0 -0
  413. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/migration/migration_2023-04-07.py +0 -0
  414. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/migration/migration_2024-04-14.py +0 -0
  415. {argus_alm-0.15.5 → argus_alm-0.15.7}/scripts/migration/migration_2025-07-18.py +0 -0
  416. {argus_alm-0.15.5 → argus_alm-0.15.7}/setup.cfg +0 -0
  417. {argus_alm-0.15.5 → argus_alm-0.15.7}/storage/profile_pictures/.gitignore +0 -0
  418. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/admin/base.html.j2 +0 -0
  419. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/auth/register.html.j2 +0 -0
  420. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/error.html.j2 +0 -0
  421. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/flash_debug.html.j2 +0 -0
  422. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/groups.html.j2 +0 -0
  423. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/home.html.j2 +0 -0
  424. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/assigned.html.j2 +0 -0
  425. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/assigned_email.html.j2 +0 -0
  426. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/email_mention.html.j2 +0 -0
  427. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/mention.html.j2 +0 -0
  428. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
  429. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
  430. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/view_highlight_mention.html.j2 +0 -0
  431. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
  432. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/partials/nav_bar.html.j2 +0 -0
  433. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/profile.html.j2 +0 -0
  434. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/runs.html.j2 +0 -0
  435. {argus_alm-0.15.5 → argus_alm-0.15.7}/templates/tests.html.j2 +0 -0
@@ -0,0 +1,27 @@
1
+ # Repository Guidelines
2
+
3
+ ## Project Structure & Module Organization
4
+ Backend services live in `argus/backend` with Flask entry points defined in `argus_backend.py`; shared helpers sit in `argus/common`, while CLI tooling and client integrations are under `argus/client`. Frontend assets are in `frontend/`, compiled into `public/dist`, and HTML templates stay in `templates/`. Test suites are grouped in `argus/backend/tests`, `argus/client/tests`, and `pytest-argus-reporter/tests`.
5
+
6
+ ## Build, Test, and Development Commands
7
+ Install dependencies with `uv sync --all-extras` and `yarn install`. Rebuild the Svelte-based UI with `ROLLUP_ENV=development yarn rollup -c --watch`. Start the API locally via `FLASK_ENV=development FLASK_APP=argus_backend:start_server CQLENG_ALLOW_SCHEMA_MANAGEMENT=1 uv run flask run`. For linting, run `uv run ruff check`. Run server-side tests with `uv run pytest argus/backend/tests` and client utilities through `uv run pytest argus/client/tests`.
8
+
9
+ ## Coding Style & Naming Conventions
10
+ Python code targets 3.12, uses 4-space indentation, and a 120-character line width enforced by Ruff and Autopep8 (see `pyproject.toml`). Prefer descriptive snake_case for Python modules and functions; keep Svelte/JS components in PascalCase folders aligned with entry files (e.g., `frontend/AdminPanel/`). Organize Flask blueprints by feature under `argus/backend` and export public APIs through `__init__.py`.
11
+
12
+ ## Svelte 5 Frontend Patterns
13
+ - Favor the rune APIs (`$props`, `$state`, `$derived`, `run`) for component state and avoid legacy `$:` reactivity when a rune captures intent better.
14
+ - Reach into the DOM through Svelte bindings or actions (`bind:this`, `use:…`) rather than global selectors; never call `Node.querySelector*` inside components—track nodes via bindings and stores instead.
15
+ - Prefer component composition, snippets, and `@const/@render` blocks over imperative DOM updates; lean on `await tick()` when you must wait for the DOM after state changes.
16
+ - Keep data transformations in script context and pass plain data to the markup; don’t derive clipboard or export payloads by scraping rendered HTML.
17
+ - Encapsulate escape-hatch logic (Bootstrap collapse, portals, external widgets) inside reusable actions/helpers so behavior is testable and discoverable.
18
+ - Use TypeScript-friendly patterns (typed props, `import type …`) whenever you bind component instances or DOM nodes, and co-locate UI-specific helpers next to their components.
19
+
20
+ ## Testing Guidelines
21
+ Tests follow `test_*.py` naming and Pytest markers such as `@pytest.mark.docker_required` for Docker-heavy suites. Keep unit tests close to their modules (e.g., `results_service` tests). Execute full coverage with `uv run pytest --cov=argus backend/tests client/tests`. Add fixtures under `argus/backend/tests/conftest.py` when sharing setup.
22
+
23
+ ## Commit & Pull Request Guidelines
24
+ Adopt the Conventional Commits style observed in history (`fix(scope): message`, `feature(app): ...`). Compose commits around a single logical change and run lint/tests before pushing. Pull requests should describe intent, outline manual validation steps, and link tracking issues; include screenshots or API payload snippets when UI or API responses change.
25
+
26
+ ## Configuration & Security Notes
27
+ Never commit secrets: When testing against Cassandra, use the Docker compose setup in `dev-db/` and tear it down after use. Keep sample data archives outside the repository to avoid leaking production artifacts.
@@ -1,7 +1,7 @@
1
1
  ARG PYTHON_VERSION=3.10.4-bullseye
2
2
 
3
3
  FROM python:${PYTHON_VERSION}
4
- ENV WEBPACK_ENVIRONMENT=production
4
+ ENV ROLLUP_ENV=production
5
5
  ENV FLASK_ENV=production
6
6
  ENV CQLENG_ALLOW_SCHEMA_MANAGEMENT=1
7
7
  ENV ARGUS_USER=argus
@@ -29,7 +29,7 @@ WORKDIR /app
29
29
  # Build project
30
30
  RUN uv sync --extra web-backend --extra docker-image \
31
31
  && yarn \
32
- && WEBPACK_ENVIRONMENT=${WEBPACK_ENVIRONMENT} yarn webpack \
32
+ && ROLLUP_ENV=${ROLLUP_ENV} yarn rollup -c \
33
33
  && mkdir /app/nginx
34
34
  VOLUME [ "/app/storage", "/app/config" ]
35
35
  EXPOSE 8000/tcp
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.5
3
+ Version: 0.15.7
4
4
  Summary: Argus
5
5
  Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
6
6
  License-Expression: Apache-2.0
@@ -24,6 +24,7 @@ Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
24
24
  Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
25
25
  Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
26
26
  Requires-Dist: boto3~=1.38.9; extra == "web-backend"
27
+ Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
27
28
  Provides-Extra: docker-image
28
29
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
29
30
  Provides-Extra: dev
@@ -50,6 +51,10 @@ Dynamic: license-file
50
51
 
51
52
  Argus is a test tracking system intended to provide observability into automated test pipelines which use long-running resources. It allows observation of a test status, its events and its allocated resources. It also allows easy comparison between particular runs of a specific test.
52
53
 
54
+ ## Contributing
55
+
56
+ Review the [Repository Guidelines](AGENTS.md) for project structure, tooling expectations, and pull request practices before submitting changes.
57
+
53
58
  ## Installation notes
54
59
 
55
60
  ### Development
@@ -106,7 +111,7 @@ yarn install
106
111
  Compile frontend files from `/frontend` into `/public/dist`
107
112
 
108
113
  ```bash
109
- yarn webpack
114
+ yarn rollup -c
110
115
  ```
111
116
 
112
117
  Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.
@@ -5,6 +5,10 @@
5
5
 
6
6
  Argus is a test tracking system intended to provide observability into automated test pipelines which use long-running resources. It allows observation of a test status, its events and its allocated resources. It also allows easy comparison between particular runs of a specific test.
7
7
 
8
+ ## Contributing
9
+
10
+ Review the [Repository Guidelines](AGENTS.md) for project structure, tooling expectations, and pull request practices before submitting changes.
11
+
8
12
  ## Installation notes
9
13
 
10
14
  ### Development
@@ -61,7 +65,7 @@ yarn install
61
65
  Compile frontend files from `/frontend` into `/public/dist`
62
66
 
63
67
  ```bash
64
- yarn webpack
68
+ yarn rollup -c
65
69
  ```
66
70
 
67
71
  Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.15.5'
21
- __version_tuple__ = version_tuple = (0, 15, 5)
31
+ __version__ = version = '0.15.7'
32
+ __version_tuple__ = version_tuple = (0, 15, 7)
33
+
34
+ __commit_id__ = commit_id = 'g0830253e3'
@@ -37,16 +37,14 @@ class ArgusClient:
37
37
  self._auth_token = auth_token
38
38
  self._base_url = base_url
39
39
  self._api_ver = api_version
40
- self._extra_headers = extra_headers or {}
40
+ self.session = requests.Session()
41
+ if extra_headers:
42
+ self.session.headers.update(extra_headers)
41
43
 
42
44
  @property
43
45
  def auth_token(self) -> str:
44
46
  return self._auth_token
45
47
 
46
- @property
47
- def extra_headers(self) -> dict:
48
- return self._extra_headers
49
-
50
48
  def verify_location_params(self, endpoint: str, location_params: dict[str, str]) -> bool:
51
49
  required_params: list[str] = re.findall(r"\$[\w_]+", endpoint)
52
50
  for param in required_params:
@@ -92,7 +90,6 @@ class ArgusClient:
92
90
  "Authorization": f"token {self.auth_token}",
93
91
  "Accept": "application/json",
94
92
  "Content-Type": "application/json",
95
- **self.extra_headers,
96
93
  }
97
94
 
98
95
  def get(self, endpoint: str, location_params: dict[str, str] = None, params: dict = None) -> requests.Response:
@@ -101,7 +98,7 @@ class ArgusClient:
101
98
  location_params=location_params
102
99
  )
103
100
  LOGGER.debug("GET Request: %s, params: %s", url, params)
104
- response = requests.get(
101
+ response = self.session.get(
105
102
  url=url,
106
103
  params=params,
107
104
  headers=self.request_headers
@@ -122,7 +119,7 @@ class ArgusClient:
122
119
  location_params=location_params
123
120
  )
124
121
  LOGGER.debug("POST Request: %s, params: %s, body: %s", url, params, body)
125
- response = requests.post(
122
+ response = self.session.post(
126
123
  url=url,
127
124
  params=params,
128
125
  json=body,
@@ -2,7 +2,7 @@ import base64
2
2
  from typing import Any
3
3
  from uuid import UUID
4
4
  from dataclasses import asdict
5
- from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest
5
+ from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest, RawEventPayload
6
6
  from argus.common.enums import ResourceState, TestStatus
7
7
  from argus.client.base import ArgusClient
8
8
  from argus.client.sct.types import EventsInfo, LogLink, Package
@@ -25,6 +25,7 @@ class ArgusSCTClient(ArgusClient):
25
25
  SUBMIT_PERFORMANCE_RESULTS = "/sct/$id/performance/submit"
26
26
  FINALIZE_NEMESIS = "/sct/$id/nemesis/finalize"
27
27
  SUBMIT_EVENTS = "/sct/$id/events/submit"
28
+ SUBMIT_EVENT = "/sct/$id/event/submit"
28
29
  SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
29
30
 
30
31
  def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
@@ -81,6 +82,17 @@ class ArgusSCTClient(ArgusClient):
81
82
  response = super().update_product_version(run_type=self.test_type, run_id=self.run_id, product_version=version)
82
83
  self.check_response(response)
83
84
 
85
+ def submit_event(self, event_data: RawEventPayload | list[RawEventPayload]):
86
+ response = self.post(
87
+ endpoint=self.Routes.SUBMIT_EVENT,
88
+ location_params={"id": str(self.run_id)},
89
+ body={
90
+ **self.generic_body,
91
+ "data": event_data,
92
+ }
93
+ )
94
+ self.check_response(response)
95
+
84
96
  def submit_sct_logs(self, logs: list[LogLink]) -> None:
85
97
  """
86
98
  Submits links to logs collected from nodes by SCT
@@ -39,6 +39,7 @@ class PytestStatus(str, Enum):
39
39
 
40
40
 
41
41
  class TestInvestigationStatus(str, Enum):
42
+ __test__ = False # prevent pytest from collecting this Enum as a test class
42
43
  NOT_INVESTIGATED = "not_investigated"
43
44
  IN_PROGRESS = "in_progress"
44
45
  INVESTIGATED = "investigated"
@@ -1,6 +1,21 @@
1
1
  from typing import TypedDict
2
2
 
3
3
 
4
+ class RawEventPayload(TypedDict):
5
+ run_id: str
6
+ severity: str
7
+ ts: float
8
+ message: str
9
+ event_type: str
10
+ received_timestamp: str | None
11
+ nemesis_name: str | None
12
+ duration: float | None
13
+ node: str | None
14
+ target_node: str | None
15
+ known_issue: str | None
16
+ nemesis_status: str | None
17
+
18
+
4
19
  class RawHDRHistogram(TypedDict):
5
20
  start_time: int
6
21
  percentile_90: float
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.5
3
+ Version: 0.15.7
4
4
  Summary: Argus
5
5
  Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
6
6
  License-Expression: Apache-2.0
@@ -24,6 +24,7 @@ Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
24
24
  Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
25
25
  Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
26
26
  Requires-Dist: boto3~=1.38.9; extra == "web-backend"
27
+ Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
27
28
  Provides-Extra: docker-image
28
29
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
29
30
  Provides-Extra: dev
@@ -50,6 +51,10 @@ Dynamic: license-file
50
51
 
51
52
  Argus is a test tracking system intended to provide observability into automated test pipelines which use long-running resources. It allows observation of a test status, its events and its allocated resources. It also allows easy comparison between particular runs of a specific test.
52
53
 
54
+ ## Contributing
55
+
56
+ Review the [Repository Guidelines](AGENTS.md) for project structure, tooling expectations, and pull request practices before submitting changes.
57
+
53
58
  ## Installation notes
54
59
 
55
60
  ### Development
@@ -106,7 +111,7 @@ yarn install
106
111
  Compile frontend files from `/frontend` into `/public/dist`
107
112
 
108
113
  ```bash
109
- yarn webpack
114
+ yarn rollup -c
110
115
  ```
111
116
 
112
117
  Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.
@@ -4,6 +4,7 @@
4
4
  .gitignore
5
5
  .pre-commit-config.yaml
6
6
  .prettierrc.js
7
+ AGENTS.md
7
8
  Dockerfile
8
9
  LICENSE
9
10
  MANIFEST.in
@@ -15,12 +16,12 @@ commitlint.config.js
15
16
  docker-entrypoint.sh
16
17
  package.json
17
18
  pyproject.toml
19
+ rollup.config.js
18
20
  run_with_profiler.py
19
21
  start_argus.sh
20
22
  tsconfig.json
21
23
  uv.lock
22
24
  uwsgi.ini
23
- webpack.config.js
24
25
  yarn.lock
25
26
  .github/workflows/.gitkeep
26
27
  .github/workflows/lint.yml
@@ -275,6 +276,9 @@ frontend/TestRun/Pytest/PytestRun.svelte
275
276
  frontend/TestRun/Pytest/PytestTab.svelte
276
277
  frontend/TestRun/Pytest/index.js
277
278
  frontend/TestRun/Pytest/types.ts
279
+ frontend/TestRun/SCT/SctEvent.svelte
280
+ frontend/TestRun/SCT/SctEvents.svelte
281
+ frontend/TestRun/SCT/SctNemesis.svelte
278
282
  frontend/TestRun/SCTSubTests/Subtest.js
279
283
  frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte
280
284
  frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte
@@ -33,3 +33,4 @@ python-jenkins>=1.7.0
33
33
  python-slugify~=6.1.1
34
34
  pygithub>=2.6.1
35
35
  boto3~=1.38.9
36
+ prometheus-flask-exporter>=0.23.2
@@ -1,5 +1,8 @@
1
1
  import logging
2
- from flask import Flask
2
+ import os
3
+ from flask import Flask, request
4
+ from prometheus_flask_exporter import NO_PREFIX
5
+ from argus.backend.metrics import METRICS
3
6
  from argus.backend.template_filters import export_filters
4
7
  from argus.backend.controller import admin, api, main
5
8
  from argus.backend.cli import cli_bp
@@ -12,8 +15,27 @@ from argus.backend.util.config import Config
12
15
  LOGGER = logging.getLogger(__name__)
13
16
 
14
17
 
18
+ def register_metrics():
19
+ METRICS.export_defaults(group_by="endpoint", prefix=NO_PREFIX)
20
+ METRICS.register_default(
21
+ METRICS.counter(
22
+ "http_request_by_endpoint_total",
23
+ "Total Requests made",
24
+ labels={
25
+ "endpoint": lambda: request.endpoint,
26
+ "method": lambda: request.method,
27
+ "status": lambda response: response.status,
28
+ },
29
+ )
30
+ )
31
+
32
+
15
33
  def start_server(config=None) -> Flask:
16
34
  app = Flask(__name__, static_url_path="/s/", static_folder="public")
35
+ METRICS.init_app(app)
36
+ if os.environ.get("PROMETHEUS_MULTIPROC_DIR"):
37
+ with app.app_context():
38
+ METRICS.register_endpoint("/metrics")
17
39
  app.json_provider_class = ArgusJSONProvider
18
40
  app.json = ArgusJSONProvider(app)
19
41
  app.jinja_env.policies["json.dumps_kwargs"]["default"] = app.json.default
@@ -35,6 +57,11 @@ def start_server(config=None) -> Flask:
35
57
  app.register_blueprint(api.bp)
36
58
  app.register_blueprint(admin.bp)
37
59
  app.register_blueprint(cli_bp)
60
+ with app.app_context():
61
+ try:
62
+ register_metrics()
63
+ except ValueError:
64
+ pass
38
65
 
39
66
  app.logger.info("Ready.")
40
67
  return app
@@ -40,7 +40,7 @@ AWS_CLIENT_SECRET: YourSecretKey
40
40
  # Client ID of a github oauth application
41
41
  GITHUB_CLIENT_ID: YOUR_GITHUB_CLIENT_ID
42
42
  # Scopes used for Github Application:
43
- # GITHUB_SCOPES: 'user:email read:user read:org repo'
43
+ # GITHUB_SCOPES: 'user:email read:user read:org'
44
44
  # Client secret of a github oauth application
45
45
  GITHUB_CLIENT_SECRET: YOUR_GITHUB_CLIENT_SECRET
46
46
  # Github personal access token
@@ -135,7 +135,7 @@ can be ignored.
135
135
  ## Run the application
136
136
  Compile frontend files from `/frontend` into `/public/dist`. Add --watch to recompile files on change.
137
137
  ```bash
138
- WEBPACK_ENVIRONMENT=development yarn webpack --watch
138
+ ROLLUP_ENV=development yarn rollup -c --watch
139
139
  ```
140
140
 
141
141
  ```bash
@@ -6,7 +6,7 @@
6
6
  import ReleaseManager from "./ReleaseManager.svelte";
7
7
  import ViewsManager from "./ViewsManager.svelte";
8
8
 
9
- export let currentRoute;
9
+ let { currentRoute = $bindable() } = $props();
10
10
 
11
11
  const routes = {
12
12
  index: AdminPanelWelcome,
@@ -25,6 +25,8 @@
25
25
  onMount(() => {
26
26
  document.title = document.title.replace("%ROUTE", titleCase(currentRoute));
27
27
  });
28
+
29
+ const SvelteComponent = $derived(routes[currentRoute] ?? routes["index"]);
28
30
  </script>
29
31
 
30
32
  <div class="container-fluid">
@@ -36,7 +38,7 @@
36
38
  class:btn-primary={currentRoute == "index"}
37
39
  class:btn-outline-primary={currentRoute != "index"}
38
40
  class="btn h-100 w-100"
39
- on:click={(e) => handleRouteClick("index", e)}
41
+ onclick={(e) => handleRouteClick("index", e)}
40
42
  >
41
43
  Home
42
44
  </button>
@@ -46,7 +48,7 @@
46
48
  class:btn-primary={currentRoute == "users"}
47
49
  class:btn-outline-primary={currentRoute != "users"}
48
50
  class="btn h-100 w-100"
49
- on:click={(e) => handleRouteClick("users", e)}
51
+ onclick={(e) => handleRouteClick("users", e)}
50
52
  >
51
53
  Users
52
54
  </button>
@@ -56,7 +58,7 @@
56
58
  class:btn-primary={currentRoute == "releases"}
57
59
  class:btn-outline-primary={currentRoute != "releases"}
58
60
  class="btn h-100 w-100"
59
- on:click={(e) => handleRouteClick("releases", e)}
61
+ onclick={(e) => handleRouteClick("releases", e)}
60
62
  >
61
63
  Releases
62
64
  </button>
@@ -66,7 +68,7 @@
66
68
  class:btn-primary={currentRoute == "views"}
67
69
  class:btn-outline-primary={currentRoute != "views"}
68
70
  class="btn h-100 w-100"
69
- on:click={(e) => handleRouteClick("views", e)}
71
+ onclick={(e) => handleRouteClick("views", e)}
70
72
  >
71
73
  Views
72
74
  </button>
@@ -74,7 +76,7 @@
74
76
  </ul>
75
77
  </div>
76
78
  <div class="col-9 min-vh-100 ">
77
- <svelte:component this={routes[currentRoute] ?? routes["index"]} />
79
+ <SvelteComponent />
78
80
  </div>
79
81
  </div>
80
82
  </div>
@@ -1,11 +1,10 @@
1
1
  <script>
2
2
  import { createEventDispatcher } from "svelte";
3
- export let tests;
4
- export let groups;
5
3
  const dispatch = createEventDispatcher();
4
+ let { tests, groups } = $props();
6
5
 
7
- let selectedGroup = tests.length > 0 ? tests[0].group_id : undefined;
8
- let selectedTests = [];
6
+ let selectedGroup = $state(tests.length > 0 ? tests[0].group_id : undefined);
7
+ let selectedTests = $state([]);
9
8
 
10
9
  const handleTestsMove = function () {
11
10
  dispatch("testsMove", {
@@ -49,10 +48,10 @@
49
48
  </select>
50
49
  </div>
51
50
  <div class="form-group text-end">
52
- <button class="btn btn-secondary" on:click={handleCancel}>
51
+ <button class="btn btn-secondary" onclick={handleCancel}>
53
52
  Cancel
54
53
  </button>
55
- <button class="btn btn-success" on:click={handleTestsMove}>
54
+ <button class="btn btn-success" onclick={handleTestsMove}>
56
55
  Move
57
56
  </button>
58
57
  </div>
@@ -1,15 +1,25 @@
1
1
  <script>
2
+ import { run } from 'svelte/legacy';
3
+
2
4
  import { createEventDispatcher } from "svelte";
3
5
  import * as urlSlug from "url-slug";
4
6
  const dispatch = createEventDispatcher();
5
- export let releaseId = "";
6
- let newGroup = {
7
+ /**
8
+ * @typedef {Object} Props
9
+ * @property {string} [releaseId]
10
+ */
11
+
12
+ /** @type {Props} */
13
+ let { releaseId = "" } = $props();
14
+ let newGroup = $state({
7
15
  group_name: "",
8
16
  pretty_name: "",
9
17
  build_system_id: "",
10
- };
18
+ });
11
19
 
12
- $: newGroup.group_name = urlSlug.convert(newGroup.pretty_name);
20
+ run(() => {
21
+ newGroup.group_name = urlSlug.convert(newGroup.pretty_name);
22
+ });
13
23
 
14
24
  const handleGroupCreate = function() {
15
25
  dispatch("groupCreate", Object.assign({
@@ -53,11 +63,11 @@
53
63
  <div class="mt-2 text-end">
54
64
  <button
55
65
  class="btn btn-secondary"
56
- on:click={handleGroupCreationCancel}
66
+ onclick={handleGroupCreationCancel}
57
67
  >
58
68
  Cancel
59
69
  </button>
60
- <button class="btn btn-success" on:click={handleGroupCreate}>
70
+ <button class="btn btn-success" onclick={handleGroupCreate}>
61
71
  Create
62
72
  </button>
63
73
  </div>
@@ -1,13 +1,17 @@
1
1
  <script>
2
+ import { run } from 'svelte/legacy';
3
+
2
4
  import { createEventDispatcher } from "svelte";
3
5
  import * as urlSlug from "url-slug";
4
6
  const dispatch = createEventDispatcher();
5
- let newRelease = {
7
+ let newRelease = $state({
6
8
  release_name: "",
7
9
  pretty_name: "",
8
10
  perpetual: false,
9
- };
10
- $: newRelease.release_name = urlSlug.convert(newRelease.pretty_name);
11
+ });
12
+ run(() => {
13
+ newRelease.release_name = urlSlug.convert(newRelease.pretty_name);
14
+ });
11
15
 
12
16
  const handleReleaseCreate = function() {
13
17
  dispatch("releaseCreate", newRelease);
@@ -49,11 +53,11 @@
49
53
  <div class="mt-2 text-end">
50
54
  <button
51
55
  class="btn btn-secondary"
52
- on:click={handleReleaseCreationCancel}
56
+ onclick={handleReleaseCreationCancel}
53
57
  >
54
58
  Cancel
55
59
  </button>
56
- <button class="btn btn-success" on:click={handleReleaseCreate}>
60
+ <button class="btn btn-success" onclick={handleReleaseCreate}>
57
61
  Create
58
62
  </button>
59
63
  </div>
@@ -1,9 +1,9 @@
1
- <script>
1
+ <script lang="ts">
2
2
  import { createEventDispatcher } from "svelte";
3
3
  import { sendMessage } from "../Stores/AlertStore";
4
4
  const dispatch = createEventDispatcher();
5
- export let releaseData;
6
- let releaseNameForConfirmation = "";
5
+ let { releaseData } = $props();
6
+ let releaseNameForConfirmation = $state("");
7
7
 
8
8
  const confirm = function() {
9
9
  if (releaseNameForConfirmation != releaseData.name) {
@@ -39,12 +39,12 @@
39
39
  </div>
40
40
  </div>
41
41
  <div class="mt-2 mb-1">
42
- <button class="btn btn-danger w-100" on:click={() => confirm()}>
42
+ <button class="btn btn-danger w-100" onclick={() => confirm()}>
43
43
  I understand. Delete the release.
44
44
  </button>
45
45
  </div>
46
46
  <div>
47
- <button class="btn btn-secondary w-100" on:click={() => cancel()}>
47
+ <button class="btn btn-secondary w-100" onclick={() => cancel()}>
48
48
  Cancel
49
49
  </button>
50
50
  </div>
@@ -1,10 +1,10 @@
1
- <script>
1
+ <script lang="ts">
2
2
  import { createEventDispatcher } from "svelte";
3
3
  import ReleaseDeletionConfirmationPopup from "./ReleaseDeletionConfirmationPopup.svelte";
4
4
  const dispatch = createEventDispatcher();
5
- export let releaseData;
5
+ let { releaseData = $bindable() } = $props();
6
6
 
7
- let awaitingConfirmation = false;
7
+ let awaitingConfirmation = $state(false);
8
8
 
9
9
  const handleReleaseEdit = function() {
10
10
  dispatch("releaseEdit", releaseData);
@@ -70,7 +70,7 @@
70
70
  <div class="mt-2 text-end">
71
71
  <button
72
72
  class="btn btn-danger"
73
- on:click={() => (awaitingConfirmation = true)}
73
+ onclick={() => (awaitingConfirmation = true)}
74
74
  >
75
75
  Delete Release
76
76
  </button>
@@ -79,11 +79,11 @@
79
79
  {/if}
80
80
  <button
81
81
  class="btn btn-secondary"
82
- on:click={handleReleaseEditCancel}
82
+ onclick={handleReleaseEditCancel}
83
83
  >
84
84
  Cancel
85
85
  </button>
86
- <button class="btn btn-success" on:click={handleReleaseEdit}>
86
+ <button class="btn btn-success" onclick={handleReleaseEdit}>
87
87
  Update
88
88
  </button>
89
89
  </div>