diff --git a/.github/AUTHORS.txt b/.github/AUTHORS.txt index de0280d1..573d0be5 100644 --- a/.github/AUTHORS.txt +++ b/.github/AUTHORS.txt @@ -38,7 +38,6 @@ Steffen - 1 commits Steven - 1 commits Xert - 1 commits deepsource-io[bot] - 1 commits -dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> - 1 commits dr460nf1r3 - 1 commits flechaig - 1 commits icy-comet <50461557+icy-comet@users.noreply.github.com> - 1 commits @@ -58,13 +57,13 @@ BOZG - 2 commits Brendan <'Lear> - 2 commits CHAIYEON - 2 commits Dan - 2 commits -Matthias - 2 commits Ruben - 2 commits Thomas - 2 commits cauterize - 2 commits k073l <21180271+k073l@users.noreply.github.com> - 2 commits liss-bot <87835202+liss-bot@users.noreply.github.com> - 2 commits patrickheeney - 2 commits +rtm516 - 2 commits ᗪєνιη <υн> - 2 commits Alucarddelta - 3 commits Tuzi555 - 3 commits @@ -72,6 +71,7 @@ Walkx <71191962+walkxcode@users.noreply.github.com> - 3 commits aterox - 3 commits bogyeong - 3 commits stanly0726 <37040069+stanly0726@users.noreply.github.com> - 3 commits +Alberto - 4 commits David - 4 commits Lissy93 - 4 commits Niklas - 4 commits @@ -91,17 +91,18 @@ Kashif - 9 commits Alejandro - 14 commits Alicia - 16 commits github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> - 16 commits +Matthias - 17 commits snyk-bot - 18 commits aterox - 19 commits EVOTk <45015615+EVOTk@users.noreply.github.com> - 22 commits Marcell <ülö> - 24 commits Alicia - 28 commits -repo-visualizer - 70 commits -snyk-bot - 74 commits +repo-visualizer - 72 commits +snyk-bot - 75 commits Lissy93 - 78 commits -Alicia - 128 commits -liss-bot - 140 commits +Alicia - 134 commits +liss-bot - 144 commits Lissy93 - 208 commits -Alicia - 250 commits +Alicia - 257 commits Alicia - 440 commits Alicia - 1488 commits \ No newline at end of file diff --git a/.github/workflows/generate-credits.yml b/.github/workflows/generate-credits.yml index ebb86f79..e34db2ca 100644 --- a/.github/workflows/generate-credits.yml +++ b/.github/workflows/generate-credits.yml @@ -42,8 +42,8 @@ jobs: runs-on: ubuntu-latest name: Inserts contributors into credits.md steps: - - name: Contribute List - Credits Page - uses: akhilmhdh/contributors-readme-action@v2.2 + - name: Contributer List - Credits Page + uses: akhilmhdh/contributors-readme-action@v2.3.6 env: GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} with: @@ -51,6 +51,7 @@ jobs: readme_path: docs/credits.md columns_per_row: 6 commit_message: ':purple_heart: Updates contributors list' + collaborators: all committer_username: liss-bot committer_email: liss-bot@d0h.co - name: Sponsors List - Readme diff --git a/Dockerfile b/Dockerfile index eb577661..57186aea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -50,4 +50,4 @@ CMD [ "yarn", "start" ] EXPOSE ${PORT} # Run simple healthchecks every 5 mins, to check that everythings still great -HEALTHCHECK --interval=5m --timeout=2s --start-period=30s CMD yarn health-check \ No newline at end of file +HEALTHCHECK --interval=5m --timeout=5s --start-period=30s CMD yarn health-check diff --git a/README.md b/README.md index 666a9a91..8194649f 100644 --- a/README.md +++ b/README.md @@ -552,28 +552,21 @@ Huge thanks to the sponsors helping to support Dashy's development! Eddy Lazzarin - - - Geolim4 -
- Georges.L -
- AnandChowdhary
Anand Chowdhary
- - + davidpaulyoung
David Young
- + + k-rol @@ -608,14 +601,21 @@ Huge thanks to the sponsors helping to support Dashy's development!
Brian McGonagill
- - + vlad-timofeev
Vlad Timofeev
+ + + + + iJasonWade +
+ Jason Ash +
diff --git a/docs/assets/CONTRIBUTORS.svg b/docs/assets/CONTRIBUTORS.svg index 3d3ef14c..b850c8ba 100644 --- a/docs/assets/CONTRIBUTORS.svg +++ b/docs/assets/CONTRIBUTORS.svg @@ -15,214 +15,217 @@ + + + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + \ No newline at end of file diff --git a/docs/assets/repo-visualization.svg b/docs/assets/repo-visualization.svg index 0b7bd173..a96a8834 100644 --- a/docs/assets/repo-visualization.svg +++ b/docs/assets/repo-visualization.svg @@ -1 +1 @@ -viewsviewsutilsutilsstylesstylesmixinsmixinsdirectivesdirectivescomponentscomponentsassetsassetsWorkspaceWorkspaceWidgetsWidgetsSettingsSettingsPageStrcturePageStrctureMinimalViewMinimalViewLinkItemsLinkItemsInteractiveEditorInteractiveEditorFormElementsFormElementsConfigurationConfigurationChartsChartslocaleslocalesinterface-iconsinterface-iconsemojis.jsonemojis.jsonemojis.jsonConfigSc...ConfigSc...ConfigSc...color-th...color-th...color-th...sk.jsonsk.jsonsk.jsones.jsones.jsones.jsonen.jsonen.jsonen.jsonde.jsonde.jsonde.jsonda.jsonda.jsonda.jsonbg.jsonbg.jsonbg.jsonko.jsonko.jsonko.jsonhi.jsonhi.jsonhi.jsoncs.jsoncs.jsoncs.jsonpt.jsonpt.jsonpt.jsonfr.jsonfr.jsonfr.jsonit.jsonit.jsonit.json.js.json.scss.svg.vueeach dot sized by file size \ No newline at end of file +viewsviewsutilsutilsstylesstylesmixinsmixinsdirectivesdirectivescomponentscomponentsassetsassetsWorkspaceWorkspaceWidgetsWidgetsSettingsSettingsPageStrcturePageStrctureMinimalViewMinimalViewLinkItemsLinkItemsInteractiveEditorInteractiveEditorFormElementsFormElementsConfigurationConfigurationChartsChartslocaleslocalesinterface-iconsinterface-iconsemojis.jsonemojis.jsonemojis.jsonConfigSc...ConfigSc...ConfigSc...color-th...color-th...color-th...sk.jsonsk.jsonsk.jsones.jsones.jsones.jsonen.jsonen.jsonen.jsonde.jsonde.jsonde.jsonda.jsonda.jsonda.jsonbg.jsonbg.jsonbg.jsonko.jsonko.jsonko.jsonhi.jsonhi.jsonhi.jsoncs.jsoncs.jsoncs.jsonpt.jsonpt.jsonpt.jsonfr.jsonfr.jsonfr.jsonit.jsonit.jsonit.json.js.json.scss.svg.vueeach dot sized by file size \ No newline at end of file diff --git a/docs/credits.md b/docs/credits.md index 4fd46d1e..62c32433 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -32,28 +32,21 @@ Eddy Lazzarin - - - Geolim4 -
- Georges.L -
- AnandChowdhary
Anand Chowdhary
- - + davidpaulyoung
David Young
- + + k-rol @@ -88,14 +81,21 @@
Brian McGonagill
- - + vlad-timofeev
Vlad Timofeev
+ + + + + iJasonWade +
+ Jason Ash +
@@ -175,6 +175,13 @@ + + + m42e +
+ Matthias Bilger +
+ pinarruiz @@ -209,15 +216,15 @@
Jammo2k5
- + + lordpansar
Magnus Sundström
- - + Cereal916 @@ -232,6 +239,13 @@ UrekD + + + albcp +
+ Alberto +
+ Tracreed @@ -245,7 +259,8 @@
Remygrandin
- + + Totto16 @@ -259,8 +274,7 @@
Brent
- - + Bogyie @@ -282,6 +296,14 @@ Rúben Silva + + + rtm516 +
+ Rtm516 +
+ + onedr0p @@ -302,8 +324,7 @@
Stephen Rigney
- - + moemoeq @@ -318,25 +339,355 @@ Dan Gilbert - - - m42e -
- Matthias Bilger -
- thomasdissert
Thomas Dissert
- + + k073l
- K073l + Null +
+ + + + patrickheeney +
+ Patrick Heeney +
+ + + + Singebob +
+ Jeremy Chauvin +
+ + + + 0n1cOn3 +
+ 0n1cOn3 +
+ + + + a-mnich +
+ Alexander Mnich +
+ + + + AaronPorts +
+ Artyom +
+ + + + + BRAVO68WEB +
+ Jyotirmoy Bandyopadhyaya [Bravo68] +
+ + + + BeginCI +
+ Begin +
+ + + + bskim45 +
+ Bumsoo Kim +
+ + + + skaarj1989 +
+ David +
+ + + + DawidPietrykowski +
+ Null +
+ + + + deepsourcebot +
+ DeepSource Bot +
+ + + + + dkyeremeh +
+ Desmond Kyeremeh +
+ + + + dougaldhub +
+ Doug Lock +
+ + + + Dylan-Bs +
+ Dylan Bersans +
+ + + + emiran-orange +
+ Null +
+ + + + FormatToday +
+ FormatToday +
+ + + + nealian +
+ Ian Neal +
+ + + + + Compunctus +
+ Iaroslav Dronskii +
+ + + + b1thunt3r +
+ Ishan Jain +
+ + + + Hellhium +
+ Jemy SCHNEPP +
+ + + + KierenConnell +
+ Kieren Connell +
+ + + + LeoColman +
+ Leonardo Colman Lopes +
+ + + + asenov +
+ Мирослав Асенов +
+ + + + + markusdd +
+ Markus Krause +
+ + + + maximemoreillon +
+ Maxime Moreillon +
+ + + + miclav +
+ Michael Lavaire +
+ + + + PlusaN +
+ Andrey +
+ + + + PrynsTag +
+ Prince Carl Velasco +
+ + + + rubjo +
+ Null +
+ + + + + turnrye +
+ Ryan Turner +
+ + + + royshreyaaa +
+ Shreya Roy +
+ + + + Smexhy +
+ Null +
+ + + + XenonR +
+ Steffen Schmidt +
+ + + + StevKast +
+ Steven Kast +
+ + + + XertDev +
+ Xert +
+ + + + + dr460nf1r3 +
+ Nico +
+ + + + flechaig +
+ Null +
+ + + + icy-comet +
+ Aniket Teredesai +
+ + + + imlonghao +
+ Imlonghao +
+ + + + jnach +
+ Jnach +
+ + + + jrobles98 +
+ Null +
+ + + + + lxjv +
+ Laker Turner +
+ + + + pablomalo +
+ Null +
+ + + + sur1v +
+ José Ignacio +
+ + + + tazboyz16 +
+ Null +
+ + + + zcq100 +
+ Null +
+ + + + AmadeusGraves +
+ Ángel Fernández Sánchez
diff --git a/docs/widgets.md b/docs/widgets.md index 4a1d6551..ade021d7 100644 --- a/docs/widgets.md +++ b/docs/widgets.md @@ -35,6 +35,8 @@ Dashy has support for displaying dynamic content in the form of widgets. There a - [GitHub Trending](#github-trending) - [GitHub Profile Stats](#github-profile-stats) - [Healthchecks Status](#healthchecks status) + - [Mvg Departure](#mvg-departure) + - [Mvg Connection](#mvg-connection) - **[Self-Hosted Services Widgets](#self-hosted-services-widgets)** - [System Info](#system-info) - [Cron Monitoring](#cron-monitoring-health-checks) @@ -43,7 +45,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a - [System Load History](#load-history-netdata) - [Pi Hole Stats](#pi-hole-stats) - [Pi Hole Queries](#pi-hole-queries) - - [Recent Traffic](#recent-traffic) + - [Pi Hole Recent Traffic](#pi-hole-recent-traffic) - [Stat Ping Statuses](#stat-ping-statuses) - [Synology Download Station](#synology-download-station) - [AdGuard Home Block Stats](#adguard-home-block-stats) @@ -58,6 +60,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a - [Nextcloud PHP OPcache](#nextcloud-php-opcache-stats) - [Sabnzbd](#sabnzbd) - [Gluetun VPN Info](#gluetun-vpn-info) + - [Drone CI Build](#drone-ci-builds) - **[System Resource Monitoring](#system-resource-monitoring)** - [CPU Usage Current](#current-cpu-usage) - [CPU Usage Per Core](#cpu-usage-per-core) @@ -620,7 +623,7 @@ Keep track of recent security advisories and vulnerabilities, with optional filt **`minScore`** | `number` | _Optional_ | If set, will only display results with a CVE score higher than the number specified. Can be a number between `0` and `9.9`. By default, vulnerabilities of all CVE scores are shown **`hasExploit`** | `boolean` | _Optional_ | If set to `true`, will only show results with active exploits. Defaults to `false` **`vendorId`** | `number` | _Optional_ | Only show results from a specific vendor, specified by ID. See [Vendor Search](https://www.cvedetails.com/vendor-search.php) for list of vendors. E.g. `23` (Debian), `26` (Microsoft), `23682` (CloudFlare) -**`productId`** | `number` | _Optional_ | Only show results from a specific app or product, specified by ID. See [Product Search](https://www.cvedetails.com/product-search.php) for list of products. E.g. `13534` (Docker), `15913` (NextCloud), `19294` (Portainer), `17908` (ProtonMail) +**`productId`** | `number` | _Optional_ | Only show results from a specific app or product, specified by ID. See [Product Search](https://www.cvedetails.com/product-search.php) for list of products. E.g. `28125` (Docker), `34622` (NextCloud), `50211` (Portainer), `95391` (ProtonMail) #### Example @@ -635,7 +638,7 @@ or options: sortBy: publish-date productId: 28125 - hasExploit: true + hasExploit: false minScore: 5 limit: 30 ``` @@ -1173,6 +1176,92 @@ Display status of one or more HealthChecks project(s). Works with healthcheck.io --- +### MVG Departure + +Display departure time of a MVG (Münchner Verkehrs Gesellschaft) station. + +From https://www.mvg.de/impressum.html: + +> [...] Die Verarbeitung unserer Inhalte oder Daten durch Dritte erfordert unsere ausdrückliche Zustimmung. Für private, nicht-kommerzielle Zwecke, wird eine gemäßigte Nutzung ohne unsere ausdrückliche Zustimmung geduldet. Jegliche Form von Data-Mining stellt keine gemäßigte Nutzung dar.[...] + +In other words: Private, noncomercial, moderate use of the API is tolerated. They don’t consider data mining as moderate use. (This is not a legal advice) + +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`location`** | `string` | Required | The name of the location (exact) or the location id, startin with `de:09162:` +**`limit`** | `integer` | _Optional_ | Limit number of entries, defaults to 10. +**`title`** | `string` | _Optional_ | A custom title to be displayed. +**`header`** | `bool` | _Optional_ | Shall the title be shown? +**`filters`** | `object` | _Optional_ | Filter results +**`filters.line`** | `string/array` | _Optional_ | Filter results for given line(s). +**`filters.product`** | `string/array` | _Optional_ | Filter results for specific product (TRAM, UBAHN, SBAHN, BUS). +**`filters.destination`** | `string/object` | _Optional_ | Filter results for specific destination(s) + +```yaml +- type: mvg + options: + location: Marienplatz + limit: 5 +``` + +#### Info + +- **CORS**: 🟢 Enabled +- **Auth**: 🟢 Not Required +- **Price**: 🟢 Free / Private use only +- **Host**: [MVG](https://mvg.de) +- **Privacy**: _See [MVG Datenschutz](https://www.mvg.de/datenschutz-mvg.html)_ + +--- + +### MVG Connection + +Display the next connection for two addresses/coordinates, stations or POI within Munich using MVG MVG (Münchner Verkehrs Gesellschaft). + +From https://www.mvg.de/impressum.html: + +> [...] Die Verarbeitung unserer Inhalte oder Daten durch Dritte erfordert unsere ausdrückliche Zustimmung. Für private, nicht-kommerzielle Zwecke, wird eine gemäßigte Nutzung ohne unsere ausdrückliche Zustimmung geduldet. Jegliche Form von Data-Mining stellt keine gemäßigte Nutzung dar.[...] + +In other words: Private, noncomercial, moderate use of the API is tolerated. They don’t consider data mining as moderate use. (This is not a legal advice) + +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`origin`** | `string` | Required | Origin of the connection. +**`destination`** | `string` | Required | Destination of the connection. +**`title`** | `string` | _Optional_ | A custom title to be displayed. +**`header`** | `bool` | _Optional_ | Shall the title be shown? +**`filters`** | `object` | _Optional_ | Filter results +**`filters.line`** | `string/array` | _Optional_ | Filter results for given line(s). +**`filters.product`** | `string/array` | _Optional_ | Filter results for specific product (TRAM, UBAHN, SBAHN, BUS). +**`filters.destination`** | `string/object` | _Optional_ | Filter results for specific destination(s) + +```yaml +- type: mvg-connection + options: + from: Marienplatz + from: Dachauer Straße 123 + header: true + filters: + product: [UBAHN] + line: [U1,U2,U4,U5] + +``` + +#### Info + +- **CORS**: 🟢 Enabled +- **Auth**: 🟢 Not Required +- **Price**: 🟢 Free / Private use only +- **Host**: [MVG](https://mvg.de) +- **Privacy**: _See [MVG Datenschutz](https://www.mvg.de/datenschutz-mvg.html)_ + +--- + + ## Self-Hosted Services Widgets ### System Info @@ -1338,6 +1427,7 @@ Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). --- | --- | --- | --- **`hostname`** | `string` | Required | The URL to your Pi-Hole instance **`hideStatus`** / **`hideChart`** / **`hideInfo`** | `boolean` | _Optional_ | Optionally hide any of the three parts of the widget +**`apiKey`** | `string` | Required | Your Pi-Hole web password. It is **NOT** your pi-hole admin interface or server password. It can be found in `/etc/pihole/setupVars.conf`, and is a 64-character located on the line that starts with `WEBPASSWORD` #### Example @@ -1345,12 +1435,13 @@ Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). - type: pi-hole-stats options: hostname: http://192.168.130.1 + apiKey: xxxxxxxxxxxxxxxxxxxxxxx ``` #### Info - **CORS**: 🟢 Enabled -- **Auth**: 🟢 Not Required +- **Auth**: 🔴 Required - **Price**: 🟢 Free - **Host**: Self-Hosted (see [GitHub - Pi-hole](https://github.com/pi-hole/pi-hole)) - **Privacy**: _See [Pi-Hole Privacy Guide](https://pi-hole.net/privacy/)_ @@ -1390,7 +1481,7 @@ Shows top queries that were blocked and allowed by [Pi-Hole](https://pi-hole.net --- -### Recent Traffic +### Pi Hole Recent Traffic Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole](https://pi-hole.net/) @@ -1401,6 +1492,7 @@ Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole] **Field** | **Type** | **Required** | **Description** --- | --- | --- | --- **`hostname`** | `string` | Required | The URL to your Pi-Hole instance +**`apiKey`** | `string` | Required | Your Pi-Hole web password. It is **NOT** your pi-hole admin interface or server password. It can be found in `/etc/pihole/setupVars.conf`, and is a 64-character located on the line that starts with `WEBPASSWORD` #### Example @@ -1408,12 +1500,13 @@ Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole] - type: pi-hole-traffic options: hostname: https://pi-hole.local + apiKey: xxxxxxxxxxxxxxxxxxxxxxx ``` #### Info - **CORS**: 🟢 Enabled -- **Auth**: 🟢 Not Required +- **Auth**: 🔴 Required - **Price**: 🟢 Free - **Host**: Self-Hosted (see [GitHub - Pi-hole](https://github.com/pi-hole/pi-hole)) - **Privacy**: _See [Pi-Hole Privacy Guide](https://pi-hole.net/privacy/)_ @@ -1943,6 +2036,42 @@ Display info from the Gluetun VPN container public IP API. This can show the IP --- +### Drone CI Builds + +Display the last builds from a [Drone CI](https://www.drone.ci) instance. A self-hosted CI system that uses docker. + +

+ +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`host`** | `string` | Required | The histname of the Drone CI instance. +**`apiKey`** | `string` | Required | The API key (https:///account). +**`limit`** | `integer` | _Optional_ | Limit the amounts of listed builds. +**`repo`** | `string` | _Optional_ | Show only builds of the specified repo + +#### Example + +```yaml +- type: drone-io + updateInterval: 30 + options: + host: https://drone.somedomain.com + apiKey: my-very-secret-api-key + limit: 10 +``` + +#### Info + +- **CORS**: 🟢 Enabled +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Drone](https://www.drone.io)) +- **Privacy**: _See [Drone](https://www.drone.io)_ + +--- + ## System Resource Monitoring ### Glances diff --git a/services/healthcheck.js b/services/healthcheck.js index 503267f3..d0b4dd82 100644 --- a/services/healthcheck.js +++ b/services/healthcheck.js @@ -4,14 +4,21 @@ * Note that exiting with code 1 indicates failure, and 0 is success */ -const http = require('http'); +const isSsl = !!process.env.SSL_PRIV_KEY_PATH && !!process.env.SSL_PUB_KEY_PATH; + +const http = require(isSsl ? 'https' : 'http'); /* Location of the server to test */ -const port = process.env.PORT || !!process.env.IS_DOCKER ? 80 : 4000; +const isDocker = !!process.env.IS_DOCKER; +const port = isSsl ? (process.env.SSL_PORT || (isDocker ? 443 : 4001)) : (process.env.PORT || isDocker ? 80 : 4000); const host = process.env.HOST || '0.0.0.0'; const timeout = 2000; -const requestOptions = { host, port, timeout }; +const agent = new http.Agent({ + rejectUnauthorized: false, // Allow self-signed certificates +}); + +const requestOptions = { host, port, timeout, agent }; const startTime = new Date(); // Initialize timestamp to calculate time taken diff --git a/src/components/Widgets/CveVulnerabilities.vue b/src/components/Widgets/CveVulnerabilities.vue index 65cc6609..ed81576c 100644 --- a/src/components/Widgets/CveVulnerabilities.vue +++ b/src/components/Widgets/CveVulnerabilities.vue @@ -92,7 +92,7 @@ export default { }, endpoint() { return `${widgetApiEndpoints.cveVulnerabilities}?${this.sortBy}${this.limit}` - + `${this.minScore}${this.vendorId}${this.hasExploit}`; + + `${this.minScore}${this.vendorId}${this.productId}${this.hasExploit}`; }, proxyReqEndpoint() { const baseUrl = process.env.VUE_APP_DOMAIN || window.location.origin; diff --git a/src/components/Widgets/DroneCi.vue b/src/components/Widgets/DroneCi.vue new file mode 100644 index 00000000..8ffb4e84 --- /dev/null +++ b/src/components/Widgets/DroneCi.vue @@ -0,0 +1,238 @@ + + + + + + + diff --git a/src/components/Widgets/HealthChecks.vue b/src/components/Widgets/HealthChecks.vue index 4115897f..2ef02823 100644 --- a/src/components/Widgets/HealthChecks.vue +++ b/src/components/Widgets/HealthChecks.vue @@ -1,14 +1,15 @@