message: Enable `batch-open-conversations` on repos without write access
diff: @@ -5,6 +5,7 @@ import elementReady from 'element-ready';
  import * as pageDetect from 'github-url-detection';
  import features from '.';
  +import looseParseInt from '../helpers/loose-parse-int';
  const confirmationRequiredCount = 10;
  @@ -63,12 +64,45 @@ async function init(): Promise<void | false> {
  Open selected
  </button>
  );
  + } else {
  + const issuesToolbar = select('#js-issues-toolbar')!;
  + issuesToolbar.prepend(
  + <div className="mr-3 d-none d-md-block">
  + <input data-check-all type="checkbox" aria-label="Select all issues" autoComplete="off"/>
  + </div>
  + );
  + issuesToolbar.append(
  + <div className="table-list-triage flex-auto js-issues-toolbar-triage">
  + <span className="text-gray table-list-header-toggle">
  + <span data-check-all-count="">1</span>
  + {' selected '}
  + <button type="button" className="btn-link rgh-batch-open-issues pl-3">Open selected</button>
  + </span>
  + </div>
  + );
  +
  + for (const conversation of select.all('.js-issue-row')) {
  + const number = looseParseInt(conversation.id);
  + conversation.firstElementChild!.prepend(
  + <label className="flex-shrink-0 py-2 pl-3 d-none d-md-block">
  + <input
  + data-check-all-item
  + type="checkbox"
  + className="js-issues-list-check"
  + name="issues[]"
  + value={number}
  + aria-labelledby={`issue_${number}_link`}
  + autoComplete="off"
  + />
  + </label>
  + );
  + }
  }
  }
  void features.add({
  id: __filebasename,
  - description: 'Adds a button to open multiple conversations at once in your repos.',
  + description: 'Lets you open multiple conversations at once via checkboxes.',
  screenshot: 'https://user-images.githubusercontent.com/1402241/38084752-4820b0d8-3378-11e8-868c-a1582b16f915.gif'
  }, {
  include: [
  