octopoller 0.3.0 → 0.3.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f208e25fceb01c8bfaa93d95fa6c9f7ea7fa3f364c1edc0e6560e21e60eab713
4
- data.tar.gz: 55bb40825baf87505dcd14385c526bedb7cc60f0fcd105b9288daec4e1711042
3
+ metadata.gz: 7803ffccc51d051d2f3b5d0a7da4e8d7fea88eb9595e62308696c494944f7060
4
+ data.tar.gz: d155ec22668921f66bc68f47fdbea39f1c903a55930b4beb783d1008205a36fb
5
5
  SHA512:
6
- metadata.gz: 0fbddcca87baec1bf16d14c34e0b92bfbace2050bad8d67d479ad41af76563bf7716f3b45e3cba31d8989a3517bdddcfcbdf39e7cb455c3d6ce8c35a3b973632
7
- data.tar.gz: e926410535fa00cbc7f8d6247536f8faaba79fb2477e411a45028b0705d1ec982d09c264c4bab510aca63b51c9306864dc167e73a19d40d7ea4cf5ed4566f7c5
6
+ metadata.gz: fe21b8ace849f3ac2cffeb18654c656a661072d59bc79ff10b3566cd7d1dd02ff0d569b9cf4070762eb87142bcd79f933d4e07d049e9c41b1a336d03aa0043cf
7
+ data.tar.gz: e89c735142719ce6dcba23c4c631991825d57c8f2f6d50d88fa8941e712794812a648a2d7894522f7fc32fd157a460e72e38609b8401cb2455b2db9fbe7dc19e
@@ -0,0 +1,41 @@
1
+ name: Bug
2
+ description: File a bug report
3
+ title: "[BUG]: "
4
+ labels: ["Type: Bug", "Status: Triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill out this bug report!
10
+ - type: textarea
11
+ id: what-happened
12
+ attributes:
13
+ label: What happened?
14
+ description: What did you do? What happened? What did you expect to happen?
15
+ placeholder: Put your description of the bug here.
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: versions
20
+ attributes:
21
+ label: Versions
22
+ description: What versions of the relevant software are you running?
23
+ placeholder: Octokit.js v2.0.10, Node v16.18.0
24
+ validations:
25
+ required: true
26
+ - type: textarea
27
+ id: logs
28
+ attributes:
29
+ label: Relevant log output
30
+ description: |
31
+ Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
32
+ Please check your logs before submission to ensure sensitive information is redacted.
33
+ render: shell
34
+ - type: checkboxes
35
+ id: terms
36
+ attributes:
37
+ label: Code of Conduct
38
+ description: By submitting this issue, you agree to follow our [Code of Conduct](CODE_OF_CONDUCT.md)
39
+ options:
40
+ - label: I agree to follow this project's Code of Conduct
41
+ required: true
@@ -0,0 +1,49 @@
1
+ name: Documentation
2
+ description: Update or add documentation
3
+ title: "[DOCS]: "
4
+ labels: ["Type: Documentation", "Status: Triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill this out!
10
+ - type: textarea
11
+ id: describe-need
12
+ attributes:
13
+ label: Describe the need
14
+ description: What do you wish was different about our docs?
15
+ placeholder: Describe the need for documentation updates here.
16
+ validations:
17
+ required: true
18
+ - type: input
19
+ id: sdk_version
20
+ attributes:
21
+ label: SDK Version
22
+ description: Do these docs apply to a specific SDK version?
23
+ placeholder: Octokit.NET v4.0.1
24
+ validations:
25
+ required: false
26
+ - type: input
27
+ id: api_version
28
+ attributes:
29
+ label: API Version
30
+ description: Do these docs apply to a specific version of the GitHub REST API or GraphQL API?
31
+ placeholder: ex. v1.1.1
32
+ validations:
33
+ required: false
34
+ - type: textarea
35
+ id: logs
36
+ attributes:
37
+ label: Relevant log output
38
+ description: |
39
+ Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
40
+ Please check your logs before submission to ensure sensitive information is redacted.
41
+ render: shell
42
+ - type: checkboxes
43
+ id: terms
44
+ attributes:
45
+ label: Code of Conduct
46
+ description: By submitting this issue, you agree to follow our [Code of Conduct](CODE_OF_CONDUCT.md)
47
+ options:
48
+ - label: I agree to follow this project's Code of Conduct
49
+ required: true
@@ -0,0 +1,49 @@
1
+ name: Feature
2
+ description: Suggest an idea for a new feature or enhancement
3
+ title: "[FEAT]: "
4
+ labels: ["Type: Feature", "Status: Triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill this out!
10
+ - type: textarea
11
+ id: describe-need
12
+ attributes:
13
+ label: Describe the need
14
+ description: What do you want to happen? What problem are you trying to solve?
15
+ placeholder: Describe the need for the feature.
16
+ validations:
17
+ required: true
18
+ - type: input
19
+ id: sdk_version
20
+ attributes:
21
+ label: SDK Version
22
+ description: Does this feature suggestion apply to a specific SDK version?
23
+ placeholder: Octokit.rb v6.0.0
24
+ validations:
25
+ required: false
26
+ - type: input
27
+ id: api_version
28
+ attributes:
29
+ label: API Version
30
+ description: Does this feature suggestion apply to a specific version of the GitHub REST API or GraphQL API?
31
+ placeholder: ex. v1.1.1
32
+ validations:
33
+ required: false
34
+ - type: textarea
35
+ id: logs
36
+ attributes:
37
+ label: Relevant log output
38
+ description: |
39
+ Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
40
+ Please check your logs before submission to ensure sensitive information is redacted.
41
+ render: shell
42
+ - type: checkboxes
43
+ id: terms
44
+ attributes:
45
+ label: Code of Conduct
46
+ description: By submitting this issue, you agree to follow our [Code of Conduct](CODE_OF_CONDUCT.md)
47
+ options:
48
+ - label: I agree to follow this project's Code of Conduct
49
+ required: true
@@ -0,0 +1,49 @@
1
+ name: Maintenance
2
+ description: Dependencies, cleanup, refactoring, reworking of code
3
+ title: "[MAINT]: "
4
+ labels: ["Type: Maintenance", "Status: Triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill this out!
10
+ - type: textarea
11
+ id: describe-need
12
+ attributes:
13
+ label: Describe the need
14
+ description: What do you want to happen?
15
+ placeholder: Describe the maintenance need here.
16
+ validations:
17
+ required: true
18
+ - type: input
19
+ id: sdk_version
20
+ attributes:
21
+ label: SDK Version
22
+ description: Does this maintenance apply to a specific SDK version?
23
+ placeholder: terraform-provider-github v5.7.0
24
+ validations:
25
+ required: false
26
+ - type: input
27
+ id: api_version
28
+ attributes:
29
+ label: API Version
30
+ description: Does this maintenance apply to a specific version of the GitHub REST API or GraphQL API?
31
+ placeholder: ex. v1.1.1
32
+ validations:
33
+ required: false
34
+ - type: textarea
35
+ id: logs
36
+ attributes:
37
+ label: Relevant log output
38
+ description: |
39
+ Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
40
+ Please check your logs before submission to ensure sensitive information is redacted.
41
+ render: shell
42
+ - type: checkboxes
43
+ id: terms
44
+ attributes:
45
+ label: Code of Conduct
46
+ description: By submitting this issue, you agree to follow our [Code of Conduct](CODE_OF_CONDUCT.md)
47
+ options:
48
+ - label: I agree to follow this project's Code of Conduct
49
+ required: true
@@ -0,0 +1,30 @@
1
+ <!-- Please refer to our contributing docs for any questions on submitting a pull request -->
2
+ <!-- Issues are required for both bug fixes and features. -->
3
+ Resolves #ISSUE_NUMBER
4
+
5
+ ----
6
+
7
+ ### Before the change?
8
+ <!-- Please describe the current behavior that you are modifying. -->
9
+
10
+ *
11
+
12
+ ### After the change?
13
+ <!-- Please describe the behavior or changes that are being added by this PR. -->
14
+
15
+ *
16
+
17
+ ### Pull request checklist
18
+ - [ ] Tests for the changes have been added (for bug fixes / features)
19
+ - [ ] Docs have been reviewed and added / updated if needed (for bug fixes / features)
20
+
21
+ ### Does this introduce a breaking change?
22
+ <!-- If this introduces a breaking change make sure to note it here any what the impact might be -->
23
+
24
+ Please see our docs on [breaking changes](https://github.com/octokit/.github/blob/master/community/breaking_changes.md) to help!
25
+
26
+ - [ ] Yes
27
+ - [ ] No
28
+
29
+ ----
30
+
@@ -0,0 +1,20 @@
1
+ name: Add PRs and issues to Octokit org project
2
+
3
+ on:
4
+ issues:
5
+ types: [reopened, opened]
6
+ pull_request_target:
7
+ types: [reopened, opened]
8
+
9
+ jobs:
10
+ add-to-project:
11
+ name: Add issue to project
12
+ runs-on: ubuntu-latest
13
+ continue-on-error: true
14
+ steps:
15
+ - uses: actions/add-to-project@v0.4.0
16
+ with:
17
+ project-url: https://github.com/orgs/octokit/projects/10
18
+ github-token: ${{ secrets.OCTOKITBOT_PROJECT_ACTION_TOKEN }}
19
+ labeled: "Status: Stale"
20
+ label-operator: NOT
@@ -0,0 +1,72 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ "main" ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ "main" ]
20
+ schedule:
21
+ - cron: '44 8 * * 4'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'ruby' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
38
+
39
+ steps:
40
+ - name: Checkout repository
41
+ uses: actions/checkout@v3
42
+
43
+ # Initializes the CodeQL tools for scanning.
44
+ - name: Initialize CodeQL
45
+ uses: github/codeql-action/init@v2
46
+ with:
47
+ languages: ${{ matrix.language }}
48
+ # If you wish to specify custom queries, you can do so here or in a config file.
49
+ # By default, queries listed here will override any specified in a config file.
50
+ # Prefix the list here with "+" to use these queries and those in the config file.
51
+
52
+ # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
53
+ # queries: security-extended,security-and-quality
54
+
55
+
56
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
57
+ # If this step fails, then you should remove it and run the build manually (see below)
58
+ - name: Autobuild
59
+ uses: github/codeql-action/autobuild@v2
60
+
61
+ # ℹ️ Command-line programs to run using the OS shell.
62
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
63
+
64
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
65
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
66
+
67
+ # - run: |
68
+ # echo "Run, Build Application using script"
69
+ # ./location_of_script_within_repo/buildscript.sh
70
+
71
+ - name: Perform CodeQL Analysis
72
+ uses: github/codeql-action/analyze@v2
@@ -0,0 +1,28 @@
1
+ name: Issue/PR response
2
+ permissions:
3
+ issues: write
4
+ pull-requests: write
5
+ on:
6
+ issues:
7
+ types:
8
+ - opened
9
+ pull_request:
10
+ types:
11
+ - opened
12
+ jobs:
13
+ respond-to-issue:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Determine issue or PR number
17
+ id: extract
18
+ run: echo "NUMBER=${{ github.event.issue.number || github.event.pull_request.number }}" >> "$GITHUB_OUTPUT"
19
+
20
+ - name: Respond to issue or PR
21
+ uses: peter-evans/create-or-update-comment@6534843181fc2aeb7f9f1cd3cd4a7b956cada2db
22
+ with:
23
+ issue-number: ${{ steps.extract.outputs.NUMBER }}
24
+ body: >
25
+ 👋 Hi! Thank you for this contribution! Just to let you know, our GitHub SDK team does a round of issue and PR reviews twice a week, every Monday and Friday!
26
+ We have a [process in place](https://github.com/octokit/.github/blob/main/community/prioritization_response.md#overview) for prioritizing and responding to your input.
27
+ Because you are a part of this community please feel free to comment, add to, or pick up any issues/PRs that are labled with `Status: Up for grabs`.
28
+ You & others like you are the reason all of this works! So thank you & happy coding! 🚀
@@ -8,11 +8,11 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
 
10
10
  steps:
11
- - uses: actions/checkout@v1
11
+ - uses: actions/checkout@v3
12
12
  - name: Set up Ruby 2.6
13
- uses: actions/setup-ruby@v1
13
+ uses: ruby/setup-ruby@v1
14
14
  with:
15
- ruby-version: 2.6.x
15
+ ruby-version: 2.6
16
16
  - name: Build and test with Rake
17
17
  run: |
18
18
  gem install bundler:2.2.33
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- octopoller (0.3.0)
4
+ octopoller (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -43,6 +43,7 @@ Octopoller exposes a single function `poll`. Here is what the API looks like:
43
43
  #
44
44
  # wait - The time delay in seconds between polls (default is 1 second)
45
45
  # - When given the argument `:exponentially` the action will be retried with exponetial backoff
46
+ # - When given 0, false or nil, the action will be retried without wait
46
47
  # timeout - The maximum number of seconds the poller will execute
47
48
  # retries - The maximum number of times the action will be retried
48
49
  # yield - A block that will execute, and if `:re_poll` is returned it will re-run
@@ -70,7 +71,7 @@ Here's what using Octpoller is like for each of the use cases listed above:
70
71
  # => "🦑"
71
72
  # => "🦑"
72
73
  # ... (for 15 seconds)
73
- # Timed out patiently (Octopoller::TimeOutError)
74
+ # Timed out patiently (Octopoller::TimeoutError)
74
75
  ```
75
76
 
76
77
  * Poll with retries:
@@ -118,4 +119,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
118
119
 
119
120
  ## Code of Conduct
120
121
 
121
- Everyone interacting in the Octopoller project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/octokit/octopoller.rb/blob/master/CODE_OF_CONDUCT.md).
122
+ Everyone interacting in the Octopoller project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/octokit/octopoller.rb/blob/main/CODE_OF_CONDUCT.md).
data/RELEASE.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # Releasing a new version of octopoller.rb
2
2
 
3
3
  1. Create a list of all the changes since the prior release
4
- 1. Compare the previous release to `master` using `https://github.com/octokit/octopoller.rb/compare/`v1.3.3.7...master` (assuming that the last release was `v1.3.3.7`)
4
+ 1. Compare the previous release to `main` using `https://github.com/octokit/octopoller.rb/compare/`v1.3.3.7...main` (assuming that the last release was `v1.3.3.7`)
5
5
  2. Ensure there are no breaking changes _(if there are breaking changes you'll need to create a release branch without those changes or bump the major version)_
6
6
  3. Update the version
7
- 1. Checkout `master`
7
+ 1. Checkout `main`
8
8
  2. Update the constant in `lib/octopoller/version.rb` (when `bundle` is executed the version in the `Gemfile.lock` will be updated)
9
9
  3. Run `bin/setup` so that `Gemfile.lock` will be updated with the new version
10
- 4. Commit and push directly to `master`
10
+ 4. Commit and push directly to `main`
11
11
  5. (Optional) Run `script/release` with no parameters to execute a dry run of a release
12
12
  6. Run the `script/release -r` script to cut a release (this will also run `script/validate` to perform the permission check)
13
13
  7. Draft a new release at <https://github.com/octokit/octopoller.rb/releases/new> containing the changelog from step 1
data/SECURITY.md ADDED
@@ -0,0 +1,13 @@
1
+ # Security Policy
2
+
3
+ Thanks for helping make GitHub Open Source Software safe for everyone.
4
+
5
+ GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [Octokit](https://github.com/octokit).
6
+
7
+ Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we want to make sure that your finding gets passed along to the maintainers of this project for remediation.
8
+
9
+
10
+ ## Reporting a Vulnerability
11
+
12
+ Since octopoller is part of [Octokit](https://github.com/octokit) (a GitHub organization) we ask that you follow the guidelines [here](https://github.com/github/.github/blob/master/SECURITY.md#reporting-security-issues) to report anything that you might've found.
13
+
@@ -1,3 +1,3 @@
1
1
  module Octopoller
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
data/lib/octopoller.rb CHANGED
@@ -16,6 +16,8 @@ module Octopoller
16
16
  # raise - Raises an Octopoller::TimeoutError if the timeout is reached
17
17
  # raise - Raises an Octopoller::TooManyAttemptsError if the retries is reached
18
18
  def poll(wait: 1, timeout: nil, retries: nil)
19
+ wait = 0 if [nil, false].include?(wait)
20
+
19
21
  Octopoller.validate_arguments(wait, timeout, retries)
20
22
  exponential_backoff = (wait == :exponentially)
21
23
 
@@ -45,7 +47,7 @@ module Octopoller
45
47
  raise ArgumentError, "Must pass an argument to either `timeout` or `retries`"
46
48
  end
47
49
  exponential_backoff = wait == :exponentially
48
- raise ArgumentError, "Cannot wait backwards in time" unless exponential_backoff || wait.positive?
50
+ raise ArgumentError, "Cannot wait backwards in time" if !exponential_backoff && wait.negative?
49
51
  raise ArgumentError, "Timed out without even being able to try" if timeout&.negative?
50
52
  raise ArgumentError, "Cannot retry something a negative number of times" if retries&.negative?
51
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octopoller
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - BenEmdon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-15 00:00:00.000000000 Z
11
+ date: 2023-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -60,8 +60,14 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".github/CODEOWNERS"
63
- - ".github/ISSUE_TEMPLATE/bug_report.md"
64
- - ".github/ISSUE_TEMPLATE/feature_request.md"
63
+ - ".github/ISSUE_TEMPLATE/bug.yml"
64
+ - ".github/ISSUE_TEMPLATE/documentation.yml"
65
+ - ".github/ISSUE_TEMPLATE/feature.yml"
66
+ - ".github/ISSUE_TEMPLATE/maintenance.yml"
67
+ - ".github/pull_request_template.md"
68
+ - ".github/workflows/add_to_octokit_project.yml"
69
+ - ".github/workflows/codeql-analysis.yml"
70
+ - ".github/workflows/immediate-response.yml"
65
71
  - ".github/workflows/ruby.yml"
66
72
  - ".gitignore"
67
73
  - ".rspec"
@@ -74,6 +80,7 @@ files:
74
80
  - README.md
75
81
  - RELEASE.md
76
82
  - Rakefile
83
+ - SECURITY.md
77
84
  - bin/console
78
85
  - bin/setup
79
86
  - lib/octopoller.rb
@@ -101,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
108
  - !ruby/object:Gem::Version
102
109
  version: '0'
103
110
  requirements: []
104
- rubygems_version: 3.1.2
111
+ rubygems_version: 3.4.20
105
112
  signing_key:
106
113
  specification_version: 4
107
114
  summary: A Ruby gem for polling and retrying actions
@@ -1,35 +0,0 @@
1
- ---
2
- name: Bug report
3
- about: Create a report to help us improve
4
-
5
- ---
6
-
7
- **Describe the bug**
8
- A clear and concise description of what the bug is.
9
-
10
- **To Reproduce**
11
- Steps to reproduce the behavior:
12
- 1. Go to '...'
13
- 2. Click on '....'
14
- 3. Scroll down to '....'
15
- 4. See error
16
-
17
- **Expected behavior**
18
- A clear and concise description of what you expected to happen.
19
-
20
- **Screenshots**
21
- If applicable, add screenshots to help explain your problem.
22
-
23
- **Desktop (please complete the following information):**
24
- - OS: [e.g. iOS]
25
- - Browser [e.g. chrome, safari]
26
- - Version [e.g. 22]
27
-
28
- **Smartphone (please complete the following information):**
29
- - Device: [e.g. iPhone6]
30
- - OS: [e.g. iOS8.1]
31
- - Browser [e.g. stock browser, safari]
32
- - Version [e.g. 22]
33
-
34
- **Additional context**
35
- Add any other context about the problem here.
@@ -1,17 +0,0 @@
1
- ---
2
- name: Feature request
3
- about: Suggest an idea for this project
4
-
5
- ---
6
-
7
- **Is your feature request related to a problem? Please describe.**
8
- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9
-
10
- **Describe the solution you'd like**
11
- A clear and concise description of what you want to happen.
12
-
13
- **Describe alternatives you've considered**
14
- A clear and concise description of any alternative solutions or features you've considered.
15
-
16
- **Additional context**
17
- Add any other context or screenshots about the feature request here.