wuffle 0.46.0 → 0.47.2

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.
package/bin/run.js CHANGED
@@ -4,9 +4,9 @@ require('dotenv').config();
4
4
 
5
5
  const { CustomProbot } = require('../lib/probot');
6
6
 
7
- const NODE_ENV = process.env.NODE_ENV;
7
+ const IS_PROD = CustomProbot.isProduction();
8
8
 
9
- const IS_SETUP = NODE_ENV !== 'production' && !CustomProbot.isSetup();
9
+ const IS_SETUP = !IS_PROD && !CustomProbot.isSetup();
10
10
 
11
11
  const fs = require('fs');
12
12
  const path = require('path');
@@ -21,8 +21,6 @@ const Columns = require('../lib/columns');
21
21
 
22
22
  const { version } = require('../package');
23
23
 
24
- const IS_PROD = NODE_ENV === 'production';
25
-
26
24
  // shim
27
25
 
28
26
  if (typeof Array.prototype.flat !== 'function') {
package/bin/wuffle CHANGED
File without changes
@@ -2,6 +2,7 @@ const DONE = 'DONE';
2
2
  const EXTERNAL_CONTRIBUTION = 'EXTERNAL_CONTRIBUTION';
3
3
  const IN_PROGRESS = 'IN_PROGRESS';
4
4
  const IN_REVIEW = 'IN_REVIEW';
5
+ const CHANGES_REQUESTED = 'changes_requested';
5
6
 
6
7
 
7
8
  /**
@@ -73,16 +74,26 @@ module.exports = function(webhookEvents, githubIssues, columns) {
73
74
  pull_request
74
75
  } = context.payload;
75
76
 
77
+ const external = isExternal(pull_request);
78
+ const draft = isDraft(pull_request);
79
+
76
80
  const newState =
77
- isExternal(pull_request) ? EXTERNAL_CONTRIBUTION : (
78
- isDraft(pull_request) ? IN_PROGRESS : IN_REVIEW
81
+ external ? EXTERNAL_CONTRIBUTION : (
82
+ draft ? IN_PROGRESS : IN_REVIEW
79
83
  );
80
84
 
81
85
  const column = columns.getByState(newState);
82
86
 
87
+ const author = pull_request.user;
88
+
89
+ const newAssignee = (
90
+ process.env.AUTO_ASSIGN_PULLS && !external &&
91
+ author && author.type === 'User' && author.login
92
+ );
93
+
83
94
  await Promise.all([
84
- githubIssues.moveIssue(context, pull_request, column),
85
- githubIssues.moveReferencedIssues(context, pull_request, column)
95
+ githubIssues.moveIssue(context, pull_request, column, newAssignee),
96
+ githubIssues.moveReferencedIssues(context, pull_request, column, newAssignee)
86
97
  ]);
87
98
  });
88
99
 
@@ -97,6 +108,31 @@ module.exports = function(webhookEvents, githubIssues, columns) {
97
108
  await githubIssues.moveReferencedIssues(context, pull_request, column);
98
109
  });
99
110
 
111
+ webhookEvents.on('pull_request_review.submitted', async (context) => {
112
+
113
+ const {
114
+ pull_request,
115
+ review
116
+ } = context.payload;
117
+
118
+ const {
119
+ state: reviewState
120
+ } = review;
121
+
122
+ if (reviewState !== CHANGES_REQUESTED) {
123
+ return;
124
+ }
125
+
126
+ const state = isExternal(pull_request) ? EXTERNAL_CONTRIBUTION : IN_PROGRESS;
127
+
128
+ const column = columns.getByState(state);
129
+
130
+ await Promise.all([
131
+ githubIssues.moveIssue(context, pull_request, column),
132
+ githubIssues.moveReferencedIssues(context, pull_request, column)
133
+ ]);
134
+ });
135
+
100
136
  webhookEvents.on('create', async (context) => {
101
137
 
102
138
  const {
@@ -170,9 +170,9 @@ function filterPull(pullRequest) {
170
170
  state,
171
171
  title,
172
172
  user,
173
- assignees,
174
- requested_reviewers,
175
- labels,
173
+ assignees = [],
174
+ requested_reviewers = [],
175
+ labels = [],
176
176
  milestone,
177
177
  repository,
178
178
  draft,
@@ -226,8 +226,8 @@ function filterIssue(issue) {
226
226
  state,
227
227
  title,
228
228
  user,
229
- assignees,
230
- labels,
229
+ assignees = [],
230
+ labels = [],
231
231
  milestone,
232
232
  html_url,
233
233
  repository,
@@ -101,6 +101,7 @@ function EventsSync(webhookEvents, store, logger) {
101
101
  'pull_request.unlabeled',
102
102
  'pull_request.edited',
103
103
  'pull_request.ready_for_review',
104
+ 'pull_request.converted_to_draft',
104
105
  'pull_request.assigned',
105
106
  'pull_request.unassigned',
106
107
  'pull_request.synchronize',
@@ -18,26 +18,47 @@ async function run(appFn) {
18
18
 
19
19
  const log = getLog();
20
20
 
21
- const server = new Server({
21
+ const serverOptions = {
22
22
  host,
23
23
  log: log.child({ name: 'server' }),
24
24
  port,
25
25
  webhookPath: process.env.WEBHOOK_PATH,
26
- webhookProxy: process.env.WEBHOOK_PROXY_URL,
27
- Probot: Probot.defaults({
28
- appId,
29
- log: log.child({ name: 'probot' }),
30
- privateKey,
31
- secret: process.env.WEBHOOK_SECRET
32
- })
33
- });
26
+ webhookProxy: process.env.WEBHOOK_PROXY_URL
27
+ };
28
+
29
+ let probotOptions = {
30
+ appId,
31
+ log: log.child({ name: 'probot' }),
32
+ privateKey,
33
+ secret: process.env.WEBHOOK_SECRET
34
+ };
34
35
 
35
36
  // use probots own setup app if the probot app
36
37
  // is not configured yet
37
- if (!isSetup()) {
38
+ if (!isProduction() && !isSetup()) {
39
+
40
+ // Workaround for setup (probot/probot#1512)
41
+ // When probot is started for the first time, it gets into a setup mode
42
+ // where `appId` and `privateKey` are not present. The setup mode gets
43
+ // these credentials. In order to not throw an error, we set the values
44
+ // to anything, as the Probot instance is not used in setup it makes no
45
+ // difference anyway.
46
+ probotOptions = {
47
+ ...probotOptions,
48
+ appId: 1,
49
+ privateKey: 'dummy value for setup, see probot/probot#1512'
50
+ };
51
+
38
52
  appFn = setupAppFactory(host, port);
39
53
  }
40
54
 
55
+ const server = new Server({
56
+ ...serverOptions,
57
+ Probot: Probot.defaults({
58
+ ...probotOptions
59
+ })
60
+ });
61
+
41
62
  // log all unhandled rejections
42
63
  process.on('unhandledRejection', getErrorHandler(server.log));
43
64
 
@@ -55,7 +76,11 @@ function isSetup() {
55
76
  const appId = parseInt(process.env.APP_ID, 10);
56
77
  const privateKey = getPrivateKey() || undefined;
57
78
 
58
- return appId && privateKey;
79
+ return !!(appId && privateKey);
80
+ }
81
+
82
+ function isProduction() {
83
+ return process.env.NODE_ENV === 'production';
59
84
  }
60
85
 
61
86
  function validateSetup() {
@@ -73,5 +98,6 @@ function validateSetup() {
73
98
  module.exports = {
74
99
  run,
75
100
  isSetup,
101
+ isProduction,
76
102
  validateSetup
77
103
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wuffle",
3
- "version": "0.46.0",
3
+ "version": "0.47.2",
4
4
  "description": "A multi-repository task board for GitHub issues",
5
5
  "author": {
6
6
  "name": "Nico Rehwaldt",
@@ -36,40 +36,40 @@
36
36
  "auto-test": "npm test -- --watch"
37
37
  },
38
38
  "dependencies": {
39
- "@aws-sdk/client-s3": "^3.38.0",
39
+ "@aws-sdk/client-s3": "^3.110.0",
40
40
  "async-didi": "^0.3.1",
41
- "body-parser": "^1.19.0",
41
+ "body-parser": "^1.20.0",
42
42
  "compression": "^1.7.4",
43
- "express-session": "^1.17.2",
43
+ "express-session": "^1.17.3",
44
44
  "fake-tag": "^3.0.0",
45
- "memorystore": "^1.6.6",
46
- "min-dash": "^3.8.0",
45
+ "memorystore": "^1.6.7",
46
+ "min-dash": "^3.8.1",
47
47
  "mkdirp": "^1.0.4",
48
48
  "p-defer": "^3.0.0",
49
49
  "prexit": "0.0.5",
50
- "probot": "^12.1.1",
51
- "smee-client": "^1.2.2"
50
+ "probot": "^12.2.4",
51
+ "smee-client": "^1.2.3"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@octokit/graphql-schema": "^10.73.0",
55
55
  "@types/compression": "^1.7.2",
56
56
  "@types/express-session": "^1.17.4",
57
57
  "@types/mkdirp": "^1.0.2",
58
- "chai": "^4.3.4",
58
+ "chai": "^4.3.6",
59
59
  "eslint": "^7.32.0",
60
60
  "eslint-plugin-bpmn-io": "^0.13.0",
61
61
  "eslint-plugin-graphql": "^4.0.0",
62
- "graphql": "^15.7.2",
63
- "mocha": "^9.1.3",
64
- "nock": "^13.2.1",
65
- "nodemon": "^2.0.15",
62
+ "graphql": "^15.8.0",
63
+ "mocha": "^9.2.2",
64
+ "nock": "^13.2.7",
65
+ "nodemon": "^2.0.16",
66
66
  "npm-run-all": "^4.1.5",
67
67
  "sinon": "^12.0.1",
68
68
  "sinon-chai": "^3.7.0",
69
- "typescript": "^4.4.4"
69
+ "typescript": "^4.7.3"
70
70
  },
71
71
  "engines": {
72
- "node": ">= 14.0"
72
+ "node": "14.x"
73
73
  },
74
74
  "nodemonConfig": {
75
75
  "exec": "node ./bin/wuffle",
@@ -94,5 +94,5 @@
94
94
  "index.js",
95
95
  "wuffle.config.example.js"
96
96
  ],
97
- "gitHead": "c5d97e3d2e95ed03a9397b1e7f8c35a4f4148e3c"
97
+ "gitHead": "45dd9f5b1309bfc4f1fbbd89a1b60c558c7c8dd2"
98
98
  }
package/public/bundle.css CHANGED
@@ -1 +1 @@
1
- .taskboard.svelte-88s1pm.svelte-88s1pm{height:100vh;display:flex;flex-direction:column}@media all and (max-width: 600px){.board-filter{width:100% !important}.navbar .board-filter-parent{flex:1 !important}.navbar .logo{width:32px;height:32px}}.taskboard-error.svelte-88s1pm.svelte-88s1pm{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);text-align:center}.taskboard-error.svelte-88s1pm p.svelte-88s1pm{font-size:1.3em;margin-top:1.7rem;margin-bottom:3rem;color:#495057}.taskboard-board.svelte-88s1pm.svelte-88s1pm{display:flex;flex:1;width:100%;padding:3px;padding-top:0;overflow-x:auto}.taskboard-column.svelte-88s1pm.svelte-88s1pm{display:flex;flex-direction:column;min-width:250px;flex:1;border-radius:2px;margin:3px;background:#ebecf0}.taskboard-column.collapsed.svelte-88s1pm.svelte-88s1pm{line-height:2em;min-width:42px;flex:0}.taskboard-column-items.svelte-88s1pm.svelte-88s1pm{flex:1;overflow-y:auto;padding:3px 10px 10px}.taskboard-column-header.svelte-88s1pm.svelte-88s1pm{text-align:center;line-height:2.4em;font-size:1.25em;color:inherit}.taskboard-column-collapse.svelte-88s1pm.svelte-88s1pm{color:#adb5bd;float:left;padding:0 12px;line-height:2.4em;margin-right:-20px;font-size:1.2rem}.taskboard-column-collapse.svelte-88s1pm.svelte-88s1pm:hover{color:#495057}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-collapse.svelte-88s1pm{float:unset;padding:0 12px;margin:0}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-header.svelte-88s1pm{display:flex;flex-direction:column;flex:1}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-name.svelte-88s1pm,.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-issue-count.svelte-88s1pm{transform:rotate(-180deg);writing-mode:vertical-rl}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-name.svelte-88s1pm{order:2}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-issue-count.svelte-88s1pm{padding:.5em 0;order:0}.taskboard-column-name.svelte-88s1pm.svelte-88s1pm{color:#424657}.taskboard-column-issue-count.svelte-88s1pm.svelte-88s1pm{color:#37ACC8;display:inline-block;padding:0 .25em}.taskboard.svelte-88s1pm.svelte-88s1pm{position:relative}.powered-by.svelte-6impii.svelte-6impii.svelte-6impii{position:absolute;bottom:10px;right:10px;padding:7px;border-radius:4px;opacity:.5;transition:opacity .1s, background .1s;color:#333;z-index:10;align-items:center;display:flex}.powered-by.svelte-6impii svg.svelte-6impii.svelte-6impii{vertical-align:bottom}.powered-by.svelte-6impii:not(:hover) .logo.svelte-6impii.svelte-6impii{color:#999}.powered-by.svelte-6impii.svelte-6impii.svelte-6impii:hover{opacity:1;box-shadow:0 1px 3px rgba(0, 0, 0, 0.3);background:white}.powered-by.svelte-6impii:hover .help.svelte-6impii.svelte-6impii{display:block}.powered-by.svelte-6impii .help.svelte-6impii.svelte-6impii{font-size:.9em;display:none}.powered-by.svelte-6impii .logo.svelte-6impii.svelte-6impii{margin-left:.5em}.powered-by.svelte-6impii .help-item.svelte-6impii.svelte-6impii{margin-left:.5em}.powered-by.svelte-6impii .help-item.svelte-6impii+.help-item.svelte-6impii{margin-left:1em}.powered-by.svelte-6impii .help-item.svelte-6impii.svelte-6impii{display:inline-block}.avatar.svelte-9r4rqh.svelte-9r4rqh{position:relative;display:inline-block;overflow:hidden;color:#fff;white-space:nowrap;text-align:center;vertical-align:middle;background:#ccc;width:32px;height:32px;line-height:32px}.avatar-shadow.svelte-9r4rqh.svelte-9r4rqh{position:absolute;top:0;left:0;width:100%;height:100%;box-shadow:inset 0 0 2px 0 rgba(0, 0, 0, 0.1)}.avatar-rounded.svelte-9r4rqh.svelte-9r4rqh{border-radius:50%}.avatar-rounded.svelte-9r4rqh .avatar-shadow.svelte-9r4rqh{border-radius:50%}.loader.svelte-1i1edqp.svelte-1i1edqp{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);text-align:center;z-index:200;pointer-events:none}.loader.svelte-1i1edqp>.content.svelte-1i1edqp{opacity:0.3;transition:opacity 0.5s}.loader.shown.svelte-1i1edqp>.content.svelte-1i1edqp{opacity:1;animation:svelte-1i1edqp-pulsate 1s infinite;animation-timing-function:ease-in-out}.loader.svelte-1i1edqp:not(.shown)>.content.svelte-1i1edqp{opacity:0}@keyframes svelte-1i1edqp-pulsate{0%{transform:scale(1);opacity:1}50%{transform:scale(0.9);opacity:0.8}100%{transform:scale(1);opacity:1}}.notifications.svelte-1kbv986{position:fixed;z-index:1010;top:24px;right:24px}.notification.svelte-16ri2nq{box-sizing:border-box;margin:0;padding:0;color:#6c757d;font-size:14px;font-variant:tabular-nums;line-height:1.5;list-style:none;width:384px;max-width:calc(100vw - 32px);padding:16px 24px;overflow:hidden;line-height:1.5;background:#fff;border-radius:3px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);border-left:solid 4px #0dcaf0}.notification.error.svelte-16ri2nq{border-left-color:#dc3545}.notification.warning.svelte-16ri2nq{border-left-color:#ffc107}.heading.svelte-16ri2nq{color:#212529;font-weight:normal;font-size:1.2em;margin-bottom:5px}.dropdown-parent.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{position:relative}.help-dropdown.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{border-radius:4px;margin:0;margin-top:5px;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;width:100%;min-width:0 !important;max-width:none !important;padding:.6em 0;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0, 0, 0, 0.1);box-shadow:0 0.1rem 1rem rgba(0, 0, 0, 0.075);position:absolute;top:100%;z-index:100;left:0px;right:auto;display:block}.help-dropdown.svelte-1bk05k0 .category.svelte-1bk05k0.svelte-1bk05k0{color:#37ACC8;font-weight:bold;padding:0 .8rem}.help-dropdown.svelte-1bk05k0 .note.svelte-1bk05k0.svelte-1bk05k0{padding:0 .8rem;color:#6c757d;margin:0}.help-dropdown.svelte-1bk05k0 .note em.svelte-1bk05k0.svelte-1bk05k0{font-style:italic}.help-dropdown.svelte-1bk05k0 .note.svelte-1bk05k0+.note.svelte-1bk05k0{margin-top:5px}.board-filter.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{width:300px}.board-filter.expanded.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{width:500px;max-width:100%}.board-filter.svelte-1bk05k0>input.svelte-1bk05k0.svelte-1bk05k0{width:100%}.icon.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{color:#dee2e6}.board-card-container.svelte-2qowi0.svelte-2qowi0{width:100%;margin-bottom:10px}.board-card.svelte-2qowi0.svelte-2qowi0{background:white;border-radius:4px;box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);position:relative;z-index:1;padding:4px 8px;cursor:default}.board-card.svelte-2qowi0 .header.svelte-2qowi0{margin-bottom:7px}.card-link:not(:last-child)>.card-status{margin-bottom:-2px !important}.board-card-links.attached .card-link:last-child>.card-status .state:last-child,.board-card>.card-status .state:last-child{border-bottom-right-radius:4px}.board-card-links.attached .card-link:last-child>.card-status .state:first-child,.board-card>.card-status .state:first-child{border-bottom-left-radius:4px}.board-card-links.svelte-2qowi0.svelte-2qowi0{margin-top:2px}.header.svelte-2qowi0.svelte-2qowi0{display:flex;align-items:center;user-select:none}.header.svelte-2qowi0>.svelte-2qowi0{flex-shrink:0}.header.svelte-2qowi0>.repository.svelte-2qowi0{flex:1}.header.svelte-2qowi0>.collaborator-links.svelte-2qowi0{display:flex;align-items:center}.issue-type.svelte-2qowi0.svelte-2qowi0{margin-right:3px}.issue-type-pull-request.svelte-2qowi0.svelte-2qowi0{color:#6cc644}.issue-number.svelte-2qowi0.svelte-2qowi0{font-weight:bold;margin-right:6px;display:flex;align-items:center;text-decoration:none}.repository.svelte-2qowi0.svelte-2qowi0,.short-title.svelte-2qowi0.svelte-2qowi0{color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title.svelte-2qowi0.svelte-2qowi0{font-size:1.1em;margin:0 0 9px 0;min-height:30px;line-height:1.2em;color:#495057;overflow:hidden}.footer.svelte-2qowi0.svelte-2qowi0{display:flex;flex-direction:row;flex-wrap:wrap}.links.svelte-2qowi0.svelte-2qowi0{margin-left:auto}.links.svelte-2qowi0 a.svelte-2qowi0{color:#adb5bd}.links.svelte-2qowi0 a.svelte-2qowi0:hover{color:#6c757d}.tag.label,.tag.milestone{margin-right:4px;margin-bottom:4px}.tag.milestone{color:#343a40 !important;border:solid 1px #6c757d}.card-link:first-child{border-top:none !important;margin-top:1px !important}.board-card-links.attached.svelte-2qowi0.svelte-2qowi0{background:#F9F9F9;border-radius:0 0 4px 4px;box-shadow:inset 0 3px 5px -2px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1);margin-top:-6px;position:relative;padding:7px 8px 4px 8px}.progress.svelte-2qowi0.svelte-2qowi0{display:flex;flex-direction:row;align-items:center;margin-bottom:7px;cursor:pointer}.progress.svelte-2qowi0:hover svg.svelte-2qowi0{color:#6c757d}.progress.svelte-2qowi0 svg.svelte-2qowi0{color:#CCC;transition:color .3s}.progress.svelte-2qowi0 .bar.svelte-2qowi0{border-radius:3px;height:5px;width:80px;background:#EEE;margin:auto 6px}.progress.svelte-2qowi0 .bar .indicator.svelte-2qowi0{border-radius:3px;background:#6c757d;height:100%}.progress.svelte-2qowi0 .text.svelte-2qowi0{margin-left:6px;font-size:0.9rem;color:#6c757d}.dropdown-parent.svelte-15toawx{position:relative}.help-dropdown.svelte-15toawx{border-radius:4px;margin:0;margin-top:5px;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;width:100%;min-width:0 !important;max-width:none !important;padding:.6em 0;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0, 0, 0, 0.1);box-shadow:0 0.1rem 1rem rgba(0, 0, 0, 0.075);position:absolute;top:100%;z-index:100;left:0px;right:auto;display:block}.repository-select.svelte-15toawx{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10}.overlay.svelte-15toawx{width:100%;height:100%;background:rgba(30, 30, 30, 0.3)}.issue-creator.svelte-15toawx{position:absolute;z-index:2;width:500px;max-width:100%;background:white;top:30%;left:50%;transform:translate(-50%);line-height:1.5;border-radius:5px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.15)}.tag.svelte-tftc6d{list-style:none;display:inline-block;height:auto;margin:0 4px 4px 0;padding:1px 7px;font-size:12px;font-weight:500;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:white;background:#fafafa;border-radius:4px;text-decoration:none}.tag.svelte-tftc6d:not(a){cursor:default}.tag.inverted.svelte-tftc6d{color:#333}.svelte-tftc6d:not(a.tag, .tag.clickable){cursor:default}.pull-request-icon.svelte-1570hl6{margin-right:1px}.pull-request-icon.open.svelte-1570hl6{color:#28a745}.pull-request-icon.closed.svelte-1570hl6{color:#cb2431}.pull-request-icon.merged.svelte-1570hl6{color:#6f42c1}.pull-request-icon.draft.svelte-1570hl6{color:#6e7781}.icon.svelte-1wc70x{margin-right:2px;color:#1d76db}.assignee.svelte-1v2qyqs.svelte-1v2qyqs{box-sizing:border-box;margin:0;font-size:14px;position:relative;display:inline-block;text-align:center;border-radius:2px;margin-left:3px;transition:margin .1s;height:18px}.assignee.svelte-1v2qyqs img.svelte-1v2qyqs{height:100%;border-radius:2px;vertical-align:unset}.assignee.svelte-1v2qyqs .icon-shadow.svelte-1v2qyqs{position:absolute;display:none;top:0;left:0;height:100%;width:100%;box-shadow:inset 0 0 2px 0 rgba(20, 20, 20, 0.3);border-radius:2px}.assignee.requested-reviewer.svelte-1v2qyqs.svelte-1v2qyqs:before{content:'';display:block;background:#bf8700;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.commented.svelte-1v2qyqs.svelte-1v2qyqs:before{content:'';display:block;background:#0dcaf0;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.approved.svelte-1v2qyqs.svelte-1v2qyqs:before{content:'';display:block;background:#198754;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.requested-changes.svelte-1v2qyqs.svelte-1v2qyqs:before{content:'';display:block;background:#dc3545;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.svelte-1v2qyqs+.assignee.svelte-1v2qyqs{margin-left:-6px;box-shadow:0 0 0 1px white}.hovered>.header .assignee+.assignee{margin-left:3px !important;box-shadow:none}.card-status.svelte-ah4rak.svelte-ah4rak{display:flex;flex-direction:row;align-items:stretch;height:3px;width:auto;margin:3px -8px -4px}.state.svelte-ah4rak.svelte-ah4rak{flex:1;background-color:#adb5bd}.state.svelte-ah4rak>span.svelte-ah4rak{display:none}.state.striped.svelte-ah4rak.svelte-ah4rak{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);animation:svelte-ah4rak-progress-bar-stripes 1s linear infinite;background-size:1rem 1rem}.state.success.svelte-ah4rak.svelte-ah4rak{background-color:#4ede9b;box-shadow:0 1px 2px 0px rgba(36, 124, 83, 0.3)}.state.failure.svelte-ah4rak.svelte-ah4rak{background-color:#ea868f;box-shadow:0 1px 2px 0px rgba(203, 70, 83, 0.3)}.state.action-required.svelte-ah4rak.svelte-ah4rak{background-color:#ffda6a;box-shadow:0 1px 2px 0px rgba(230, 181, 32, 0.3)}.state.svelte-ah4rak+.state.svelte-ah4rak{margin-left:1px}@keyframes svelte-ah4rak-progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.card-link:not(:last-child)>.card-status{margin-bottom:-2px !important}.board-card-links.attached .card-link:last-child>.card-status .state:last-child,.board-card>.card-status .state:last-child{border-bottom-right-radius:4px}.board-card-links.attached .card-link:last-child>.card-status .state:first-child,.board-card>.card-status .state:first-child{border-bottom-left-radius:4px}.header.svelte-lrpwe8.svelte-lrpwe8{display:flex;align-items:center;user-select:none}.header.svelte-lrpwe8>.svelte-lrpwe8{flex-shrink:0}.header.svelte-lrpwe8>.collaborator-links.svelte-lrpwe8{display:flex;align-items:center}.issue-number.svelte-lrpwe8.svelte-lrpwe8{font-weight:bold;margin-right:6px;display:flex;align-items:center;text-decoration:none}.short-title.svelte-lrpwe8.svelte-lrpwe8{color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-link.svelte-lrpwe8.svelte-lrpwe8{border-top:solid 1px #F0F0F0;margin-top:2px;padding-top:2px}.card-link.svelte-lrpwe8 .short-title.svelte-lrpwe8{flex:1}.card-link .epic{color:#1d76db}.icon.svelte-1r532dq{margin-right:2px}.icon.issue.open.svelte-1r532dq,.icon.depends-on.closed.svelte-1r532dq{color:#28a745}.icon.issue.closed.svelte-1r532dq,.icon.depends-on.svelte-1r532dq{color:#cb2431}.icon.linked-to.svelte-1r532dq{color:#37ACC8}.icon.svelte-1og232h{vertical-align:initial}ul.svelte-r39x99{list-style:none;margin:0;padding:0}li.svelte-r39x99{padding:0 .8rem;line-height:2em}li.selectable.svelte-r39x99{cursor:pointer}li.selectable.svelte-r39x99:hover,li.selectable.active.svelte-r39x99{background:rgba(55, 172, 200, 0.1)}li.text.svelte-r39x99{color:#6c757d}.matched.svelte-r39x99{background:rgba(55, 172, 200, 0.2);color:#2c8aa0}
1
+ .taskboard.svelte-88s1pm.svelte-88s1pm{height:100vh;display:flex;flex-direction:column}@media all and (max-width: 600px){.board-filter{width:100% !important}.navbar .board-filter-parent{flex:1 !important}.navbar .logo{width:32px;height:32px}}.taskboard-error.svelte-88s1pm.svelte-88s1pm{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);text-align:center}.taskboard-error.svelte-88s1pm p.svelte-88s1pm{font-size:1.3em;margin-top:1.7rem;margin-bottom:3rem;color:#495057}.taskboard-board.svelte-88s1pm.svelte-88s1pm{display:flex;flex:1;width:100%;padding:3px;padding-top:0;overflow-x:auto}.taskboard-column.svelte-88s1pm.svelte-88s1pm{display:flex;flex-direction:column;min-width:250px;flex:1;border-radius:2px;margin:3px;background:#ebecf0}.taskboard-column.collapsed.svelte-88s1pm.svelte-88s1pm{line-height:2em;min-width:42px;flex:0}.taskboard-column-items.svelte-88s1pm.svelte-88s1pm{flex:1;overflow-y:auto;padding:3px 10px 10px}.taskboard-column-header.svelte-88s1pm.svelte-88s1pm{text-align:center;line-height:2.4em;font-size:1.25em;color:inherit}.taskboard-column-collapse.svelte-88s1pm.svelte-88s1pm{color:#adb5bd;float:left;padding:0 12px;line-height:2.4em;margin-right:-20px;font-size:1.2rem}.taskboard-column-collapse.svelte-88s1pm.svelte-88s1pm:hover{color:#495057}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-collapse.svelte-88s1pm{float:unset;padding:0 12px;margin:0}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-header.svelte-88s1pm{display:flex;flex-direction:column;flex:1}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-name.svelte-88s1pm,.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-issue-count.svelte-88s1pm{transform:rotate(-180deg);writing-mode:vertical-rl}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-name.svelte-88s1pm{order:2}.taskboard-column.collapsed.svelte-88s1pm .taskboard-column-issue-count.svelte-88s1pm{padding:.5em 0;order:0}.taskboard-column-name.svelte-88s1pm.svelte-88s1pm{color:#424657}.taskboard-column-issue-count.svelte-88s1pm.svelte-88s1pm{color:#37ACC8;display:inline-block;padding:0 .25em}.taskboard.svelte-88s1pm.svelte-88s1pm{position:relative}.powered-by.svelte-6impii.svelte-6impii.svelte-6impii{position:absolute;bottom:10px;right:10px;padding:7px;border-radius:4px;opacity:.5;transition:opacity .1s, background .1s;color:#333;z-index:10;align-items:center;display:flex}.powered-by.svelte-6impii svg.svelte-6impii.svelte-6impii{vertical-align:bottom}.powered-by.svelte-6impii:not(:hover) .logo.svelte-6impii.svelte-6impii{color:#999}.powered-by.svelte-6impii.svelte-6impii.svelte-6impii:hover{opacity:1;box-shadow:0 1px 3px rgba(0, 0, 0, 0.3);background:white}.powered-by.svelte-6impii:hover .help.svelte-6impii.svelte-6impii{display:block}.powered-by.svelte-6impii .help.svelte-6impii.svelte-6impii{font-size:.9em;display:none}.powered-by.svelte-6impii .logo.svelte-6impii.svelte-6impii{margin-left:.5em}.powered-by.svelte-6impii .help-item.svelte-6impii.svelte-6impii{margin-left:.5em}.powered-by.svelte-6impii .help-item.svelte-6impii+.help-item.svelte-6impii{margin-left:1em}.powered-by.svelte-6impii .help-item.svelte-6impii.svelte-6impii{display:inline-block}.avatar.svelte-9r4rqh.svelte-9r4rqh{position:relative;display:inline-block;overflow:hidden;color:#fff;white-space:nowrap;text-align:center;vertical-align:middle;background:#ccc;width:32px;height:32px;line-height:32px}.avatar-shadow.svelte-9r4rqh.svelte-9r4rqh{position:absolute;top:0;left:0;width:100%;height:100%;box-shadow:inset 0 0 2px 0 rgba(0, 0, 0, 0.1)}.avatar-rounded.svelte-9r4rqh.svelte-9r4rqh{border-radius:50%}.avatar-rounded.svelte-9r4rqh .avatar-shadow.svelte-9r4rqh{border-radius:50%}.notifications.svelte-1kbv986{position:fixed;z-index:1010;top:24px;right:24px}.loader.svelte-1i1edqp.svelte-1i1edqp{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);text-align:center;z-index:200;pointer-events:none}.loader.svelte-1i1edqp>.content.svelte-1i1edqp{opacity:0.3;transition:opacity 0.5s}.loader.shown.svelte-1i1edqp>.content.svelte-1i1edqp{opacity:1;animation:svelte-1i1edqp-pulsate 1s infinite;animation-timing-function:ease-in-out}.loader.svelte-1i1edqp:not(.shown)>.content.svelte-1i1edqp{opacity:0}@keyframes svelte-1i1edqp-pulsate{0%{transform:scale(1);opacity:1}50%{transform:scale(0.9);opacity:0.8}100%{transform:scale(1);opacity:1}}.board-card-container.svelte-2qowi0.svelte-2qowi0{width:100%;margin-bottom:10px}.board-card.svelte-2qowi0.svelte-2qowi0{background:white;border-radius:4px;box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);position:relative;z-index:1;padding:4px 8px;cursor:default}.board-card.svelte-2qowi0 .header.svelte-2qowi0{margin-bottom:7px}.card-link:not(:last-child)>.card-status{margin-bottom:-2px !important}.board-card-links.attached .card-link:last-child>.card-status .state:last-child,.board-card>.card-status .state:last-child{border-bottom-right-radius:4px}.board-card-links.attached .card-link:last-child>.card-status .state:first-child,.board-card>.card-status .state:first-child{border-bottom-left-radius:4px}.board-card-links.svelte-2qowi0.svelte-2qowi0{margin-top:2px}.header.svelte-2qowi0.svelte-2qowi0{display:flex;align-items:center;user-select:none}.header.svelte-2qowi0>.svelte-2qowi0{flex-shrink:0}.header.svelte-2qowi0>.repository.svelte-2qowi0{flex:1}.header.svelte-2qowi0>.collaborator-links.svelte-2qowi0{display:flex;align-items:center}.issue-type.svelte-2qowi0.svelte-2qowi0{margin-right:3px}.issue-type-pull-request.svelte-2qowi0.svelte-2qowi0{color:#6cc644}.issue-number.svelte-2qowi0.svelte-2qowi0{font-weight:bold;margin-right:6px;display:flex;align-items:center;text-decoration:none}.repository.svelte-2qowi0.svelte-2qowi0,.short-title.svelte-2qowi0.svelte-2qowi0{color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title.svelte-2qowi0.svelte-2qowi0{font-size:1.1em;margin:0 0 9px 0;min-height:30px;line-height:1.2em;color:#495057;overflow:hidden}.footer.svelte-2qowi0.svelte-2qowi0{display:flex;flex-direction:row;flex-wrap:wrap}.links.svelte-2qowi0.svelte-2qowi0{margin-left:auto}.links.svelte-2qowi0 a.svelte-2qowi0{color:#adb5bd}.links.svelte-2qowi0 a.svelte-2qowi0:hover{color:#6c757d}.tag.label,.tag.milestone{margin-right:4px;margin-bottom:4px}.tag.milestone{color:#343a40 !important;border:solid 1px #6c757d}.card-link:first-child{border-top:none !important;margin-top:1px !important}.board-card-links.attached.svelte-2qowi0.svelte-2qowi0{background:#F9F9F9;border-radius:0 0 4px 4px;box-shadow:inset 0 3px 5px -2px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1);margin-top:-6px;position:relative;padding:7px 8px 4px 8px}.progress.svelte-2qowi0.svelte-2qowi0{display:flex;flex-direction:row;align-items:center;margin-bottom:7px;cursor:pointer}.progress.svelte-2qowi0:hover svg.svelte-2qowi0{color:#6c757d}.progress.svelte-2qowi0 svg.svelte-2qowi0{color:#CCC;transition:color .3s}.progress.svelte-2qowi0 .bar.svelte-2qowi0{border-radius:3px;height:5px;width:80px;background:#EEE;margin:auto 6px}.progress.svelte-2qowi0 .bar .indicator.svelte-2qowi0{border-radius:3px;background:#6c757d;height:100%}.progress.svelte-2qowi0 .text.svelte-2qowi0{margin-left:6px;font-size:0.9rem;color:#6c757d}.notification.svelte-16ri2nq{box-sizing:border-box;margin:0;padding:0;color:#6c757d;font-size:14px;font-variant:tabular-nums;line-height:1.5;list-style:none;width:384px;max-width:calc(100vw - 32px);padding:16px 24px;overflow:hidden;line-height:1.5;background:#fff;border-radius:3px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);border-left:solid 4px #0dcaf0}.notification.error.svelte-16ri2nq{border-left-color:#dc3545}.notification.warning.svelte-16ri2nq{border-left-color:#ffc107}.heading.svelte-16ri2nq{color:#212529;font-weight:normal;font-size:1.2em;margin-bottom:5px}.dropdown-parent.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{position:relative}.help-dropdown.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{border-radius:4px;margin:0;margin-top:5px;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;width:100%;min-width:0 !important;max-width:none !important;padding:.6em 0;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0, 0, 0, 0.1);box-shadow:0 0.1rem 1rem rgba(0, 0, 0, 0.075);position:absolute;top:100%;z-index:100;left:0px;right:auto;display:block}.help-dropdown.svelte-1bk05k0 .category.svelte-1bk05k0.svelte-1bk05k0{color:#37ACC8;font-weight:bold;padding:0 .8rem}.help-dropdown.svelte-1bk05k0 .note.svelte-1bk05k0.svelte-1bk05k0{padding:0 .8rem;color:#6c757d;margin:0}.help-dropdown.svelte-1bk05k0 .note em.svelte-1bk05k0.svelte-1bk05k0{font-style:italic}.help-dropdown.svelte-1bk05k0 .note.svelte-1bk05k0+.note.svelte-1bk05k0{margin-top:5px}.board-filter.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{width:300px}.board-filter.expanded.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{width:500px;max-width:100%}.board-filter.svelte-1bk05k0>input.svelte-1bk05k0.svelte-1bk05k0{width:100%}.icon.svelte-1bk05k0.svelte-1bk05k0.svelte-1bk05k0{color:#dee2e6}.dropdown-parent.svelte-15toawx{position:relative}.help-dropdown.svelte-15toawx{border-radius:4px;margin:0;margin-top:5px;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;width:100%;min-width:0 !important;max-width:none !important;padding:.6em 0;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0, 0, 0, 0.1);box-shadow:0 0.1rem 1rem rgba(0, 0, 0, 0.075);position:absolute;top:100%;z-index:100;left:0px;right:auto;display:block}.repository-select.svelte-15toawx{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10}.overlay.svelte-15toawx{width:100%;height:100%;background:rgba(30, 30, 30, 0.3)}.issue-creator.svelte-15toawx{position:absolute;z-index:2;width:500px;max-width:100%;background:white;top:30%;left:50%;transform:translate(-50%);line-height:1.5;border-radius:5px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.15)}.pull-request-icon.svelte-1570hl6{margin-right:1px}.pull-request-icon.open.svelte-1570hl6{color:#28a745}.pull-request-icon.closed.svelte-1570hl6{color:#cb2431}.pull-request-icon.merged.svelte-1570hl6{color:#6f42c1}.pull-request-icon.draft.svelte-1570hl6{color:#6e7781}.tag.svelte-tftc6d{list-style:none;display:inline-block;height:auto;margin:0 4px 4px 0;padding:1px 7px;font-size:12px;font-weight:500;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:white;background:#fafafa;border-radius:4px;text-decoration:none}.tag.svelte-tftc6d:not(a){cursor:default}.tag.inverted.svelte-tftc6d{color:#333}.svelte-tftc6d:not(a.tag, .tag.clickable){cursor:default}.icon.svelte-1wc70x{margin-right:2px;color:#1d76db}.assignee.svelte-7henim.svelte-7henim{box-sizing:border-box;margin:0;font-size:14px;position:relative;display:flex;text-align:center;border-radius:2px;margin-left:3px;transition:margin .1s;height:18px}.assignee.svelte-7henim img.svelte-7henim{height:100%;border-radius:2px;vertical-align:unset}.assignee.svelte-7henim .icon-shadow.svelte-7henim{position:absolute;display:none;top:0;left:0;height:100%;width:100%;box-shadow:inset 0 0 2px 0 rgba(20, 20, 20, 0.3);border-radius:2px}.assignee.requested-reviewer.svelte-7henim.svelte-7henim:before{content:'';display:block;background:#bf8700;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.commented.svelte-7henim.svelte-7henim:before{content:'';display:block;background:#0dcaf0;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.approved.svelte-7henim.svelte-7henim:before{content:'';display:block;background:#198754;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.requested-changes.svelte-7henim.svelte-7henim:before{content:'';display:block;background:#dc3545;box-shadow:0 0 0 2px white;width:6px;height:6px;border-radius:50%;position:absolute;top:-2px;left:-2px;z-index:1}.assignee.svelte-7henim+.assignee.svelte-7henim{margin-left:-6px;box-shadow:0 0 0 1px white}.hovered>.header .assignee+.assignee{margin-left:3px !important;box-shadow:none}.card-status.svelte-ah4rak.svelte-ah4rak{display:flex;flex-direction:row;align-items:stretch;height:3px;width:auto;margin:3px -8px -4px}.state.svelte-ah4rak.svelte-ah4rak{flex:1;background-color:#adb5bd}.state.svelte-ah4rak>span.svelte-ah4rak{display:none}.state.striped.svelte-ah4rak.svelte-ah4rak{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);animation:svelte-ah4rak-progress-bar-stripes 1s linear infinite;background-size:1rem 1rem}.state.success.svelte-ah4rak.svelte-ah4rak{background-color:#4ede9b;box-shadow:0 1px 2px 0px rgba(36, 124, 83, 0.3)}.state.failure.svelte-ah4rak.svelte-ah4rak{background-color:#ea868f;box-shadow:0 1px 2px 0px rgba(203, 70, 83, 0.3)}.state.action-required.svelte-ah4rak.svelte-ah4rak{background-color:#ffda6a;box-shadow:0 1px 2px 0px rgba(230, 181, 32, 0.3)}.state.svelte-ah4rak+.state.svelte-ah4rak{margin-left:1px}@keyframes svelte-ah4rak-progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.card-link:not(:last-child)>.card-status{margin-bottom:-2px !important}.board-card-links.attached .card-link:last-child>.card-status .state:last-child,.board-card>.card-status .state:last-child{border-bottom-right-radius:4px}.board-card-links.attached .card-link:last-child>.card-status .state:first-child,.board-card>.card-status .state:first-child{border-bottom-left-radius:4px}.header.svelte-lrpwe8.svelte-lrpwe8{display:flex;align-items:center;user-select:none}.header.svelte-lrpwe8>.svelte-lrpwe8{flex-shrink:0}.header.svelte-lrpwe8>.collaborator-links.svelte-lrpwe8{display:flex;align-items:center}.issue-number.svelte-lrpwe8.svelte-lrpwe8{font-weight:bold;margin-right:6px;display:flex;align-items:center;text-decoration:none}.short-title.svelte-lrpwe8.svelte-lrpwe8{color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-link.svelte-lrpwe8.svelte-lrpwe8{border-top:solid 1px #F0F0F0;margin-top:2px;padding-top:2px}.card-link.svelte-lrpwe8 .short-title.svelte-lrpwe8{flex:1}.card-link .epic{color:#1d76db}.icon.svelte-1r532dq{margin-right:2px}.icon.issue.open.svelte-1r532dq,.icon.depends-on.closed.svelte-1r532dq{color:#28a745}.icon.issue.closed.svelte-1r532dq,.icon.depends-on.svelte-1r532dq{color:#cb2431}.icon.linked-to.svelte-1r532dq{color:#37ACC8}.icon.svelte-1og232h{vertical-align:initial}ul.svelte-r39x99{list-style:none;margin:0;padding:0}li.svelte-r39x99{padding:0 .8rem;line-height:2em}li.selectable.svelte-r39x99{cursor:pointer}li.selectable.svelte-r39x99:hover,li.selectable.active.svelte-r39x99{background:rgba(55, 172, 200, 0.1)}li.text.svelte-r39x99{color:#6c757d}.matched.svelte-r39x99{background:rgba(55, 172, 200, 0.2);color:#2c8aa0}