# Configuration for probot-no-response - https://github.com/probot/no-response

# Number of days of inactivity before an issue is closed for lack of response.
daysUntilClose: 21

# Label requiring a response.
responseRequiredLabel: "waiting for customer response"

# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
  Without additional information, we are unfortunately not sure how to
  resolve this issue. We are therefore reluctantly going to close this
  bug for now.

  If you find this problem please file a new issue with the same description,
  what happens, logs and the output of 'flutter doctor -v'. All system setups
  can be slightly different so it's always better to open new issues and reference
  the related ones.

  Thanks for your contribution.
