wuffle 0.41.5 → 0.42.0
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/lib/apps/auth-routes/AuthRoutes.js +5 -3
- package/lib/apps/automatic-dev-flow.js +2 -0
- package/lib/apps/background-sync/BackgroundSync.js +11 -9
- package/lib/apps/board-api-routes.js +3 -3
- package/lib/apps/board-routes.js +1 -1
- package/lib/apps/dump-store/local/DumpStoreLocal.js +5 -3
- package/lib/apps/dump-store/s3/DumpStoreS3.js +5 -3
- package/lib/apps/events-sync.js +28 -18
- package/lib/apps/github-app/GithubApp.js +19 -3
- package/lib/apps/github-checks/GithubChecks.js +6 -4
- package/lib/apps/github-client/GithubClient.js +33 -3
- package/lib/apps/github-comments/GithubComments.js +205 -0
- package/lib/apps/github-comments/index.js +6 -0
- package/lib/apps/github-issues/GithubIssues.js +7 -1
- package/lib/apps/github-reviews/GithubReviews.js +7 -3
- package/lib/apps/github-statuses/GithubStatuses.js +2 -0
- package/lib/apps/log-events.js +11 -7
- package/lib/apps/reindex-store.js +14 -2
- package/lib/apps/route-compression.js +1 -1
- package/lib/apps/route-https.js +1 -1
- package/lib/apps/search/Search.js +32 -5
- package/lib/apps/security-context/SecurityContext.js +5 -0
- package/lib/apps/user-access/UserAccess.js +6 -4
- package/lib/apps/webhook-events/WebhookEvents.js +33 -9
- package/lib/filters.js +20 -16
- package/lib/index.js +1 -0
- package/lib/types.d.ts +23 -6
- package/package.json +22 -17
- package/public/bundle.css +1 -1
- package/public/bundle.js +1 -1
- package/public/bundle.js.map +1 -1
- package/public/service-worker.js.map +1 -1
- package/CHANGELOG.md +0 -465
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-worker.js","sources":["../../board/src/service-worker.js"],"sourcesContent":["import AVATAR_SVG from './avatar.svg';\n\nconst CACHE = 'wuffle-cache-v1';\n\nfunction precache() {\n return caches.open(CACHE).then(function(cache) {\n return cache.addAll([\n '/board',\n '/board/apple-touch-icon.png',\n '/board/bundle.css',\n '/board/bundle.css.map',\n '/board/bundle.js',\n '/board/bundle.js.map',\n '/board/favicon.png',\n '/board/global.css',\n '/board/logo-192.png',\n '/board/logo-512.png',\n '/board/logo.svg',\n '/board/manifest.json'\n ]).catch(err => console.error('caching failed', err));\n });\n}\n\nfunction cacheResponse(event, request, response) {\n\n return caches.open(CACHE).then(cache => {\n\n if (!event.clientId) {\n cache.put(request, response);\n\n return;\n }\n\n /* global clients */\n return clients.get(event.clientId).then(client => {\n\n return cache.match(request).then(matchingResponse => {\n\n if (matchingResponse) {\n\n const oldEtag = matchingResponse.headers.get('ETag');\n const newEtag = response.headers.get('ETag');\n\n if (oldEtag !== newEtag) {\n client.postMessage({\n message: 'resource.changed',\n url: request.url\n });\n }\n }\n\n cache.put(request, response);\n });\n });\n });\n}\n\nfunction fromNetwork(event, request) {\n\n return fetch(request).then(response => {\n\n if (response && response.status === 200) {\n const cachedResponse = response.clone();\n\n event.waitUntil(\n cacheResponse(event, request, cachedResponse)\n );\n }\n\n return response;\n });\n}\n\nfunction serveFallbackAvatar() {\n return Promise.resolve(new Response(AVATAR_SVG, {\n headers: {\n 'Content-Type': 'image/svg+xml'\n }\n }));\n}\n\nfunction fromCache(event, request) {\n return caches.open(CACHE).then(cache => {\n return cache.match(request).then(matching => {\n return matching || Promise.reject('not-in-cache');\n });\n });\n}\n\nself.addEventListener('install', event => {\n event.waitUntil(\n precache(
|
|
1
|
+
{"version":3,"file":"service-worker.js","sources":["../../board/src/service-worker.js"],"sourcesContent":["import AVATAR_SVG from './avatar.svg';\n\nconst CACHE = 'wuffle-cache-v1';\n\nfunction precache() {\n return caches.open(CACHE).then(function(cache) {\n return cache.addAll([\n '/board',\n '/board/apple-touch-icon.png',\n '/board/bundle.css',\n '/board/bundle.css.map',\n '/board/bundle.js',\n '/board/bundle.js.map',\n '/board/favicon.png',\n '/board/global.css',\n '/board/logo-192.png',\n '/board/logo-512.png',\n '/board/logo.svg',\n '/board/manifest.json'\n ]).catch(err => console.error('caching failed', err));\n });\n}\n\nfunction cacheResponse(event, request, response) {\n\n return caches.open(CACHE).then(cache => {\n\n if (!event.clientId) {\n cache.put(request, response);\n\n return;\n }\n\n /* global clients */\n return clients.get(event.clientId).then(client => {\n\n return cache.match(request).then(matchingResponse => {\n\n if (matchingResponse) {\n\n const oldEtag = matchingResponse.headers.get('ETag');\n const newEtag = response.headers.get('ETag');\n\n if (oldEtag !== newEtag) {\n client.postMessage({\n message: 'resource.changed',\n url: request.url\n });\n }\n }\n\n cache.put(request, response);\n });\n });\n });\n}\n\nfunction fromNetwork(event, request) {\n\n return fetch(request).then(response => {\n\n if (response && response.status === 200) {\n const cachedResponse = response.clone();\n\n event.waitUntil(\n cacheResponse(event, request, cachedResponse)\n );\n }\n\n return response;\n });\n}\n\nfunction serveFallbackAvatar() {\n return Promise.resolve(new Response(AVATAR_SVG, {\n headers: {\n 'Content-Type': 'image/svg+xml'\n }\n }));\n}\n\nfunction fromCache(event, request) {\n return caches.open(CACHE).then(cache => {\n return cache.match(request).then(matching => {\n return matching || Promise.reject('not-in-cache');\n });\n });\n}\n\nself.addEventListener('install', event => {\n event.waitUntil(\n precache()\n );\n\n self.skipWaiting();\n});\n\nself.addEventListener('activate', function(event) {\n event.waitUntil(self.clients.claim());\n});\n\n// actual fetching logic ////////////\n\nself.addEventListener('fetch', function(event) {\n\n if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') {\n return;\n }\n\n const { request } = event;\n\n const { url } = request;\n\n if (/^https:\\/\\/avatars[\\d]+\\.githubusercontent\\.com/.test(url)) {\n event.respondWith(\n fromCache(event, request)\n .catch(() => fromNetwork(event, request))\n .catch(() => serveFallbackAvatar())\n );\n\n return;\n }\n\n if (/\\/board\\?.*$/.test(url)) {\n\n const cachedRequest = new Request('/board');\n\n const remoteFetch = fromNetwork(event, cachedRequest);\n\n event.respondWith(\n fromCache(event, cachedRequest)\n .catch(() => remoteFetch)\n );\n\n event.waitUntil(remoteFetch);\n\n return;\n }\n\n if (!/\\/wuffle\\/.*/.test(url) || /\\/wuffle\\/board$/.test(url)) {\n const remoteFetch = fromNetwork(event, request);\n\n event.respondWith(\n fromCache(event, request)\n .catch(() => remoteFetch)\n );\n\n event.waitUntil(remoteFetch);\n\n return;\n }\n});"],"names":["CACHE","fromNetwork","event","request","fetch","then","response","status","cachedResponse","clone","waitUntil","caches","open","cache","clientId","clients","get","client","match","matchingResponse","headers","postMessage","message","url","put","cacheResponse","fromCache","matching","Promise","reject","self","addEventListener","addAll","catch","err","console","error","skipWaiting","claim","mode","test","respondWith","resolve","Response","cachedRequest","Request","remoteFetch"],"mappings":"yBAEA,MAAMA,EAAQ,kBAuDd,SAASC,EAAYC,EAAOC,GAE1B,OAAOC,MAAMD,GAASE,MAAKC,IAEzB,GAAIA,GAAgC,MAApBA,EAASC,OAAgB,CACvC,MAAMC,EAAiBF,EAASG,QAEhCP,EAAMQ,UAzCZ,SAAuBR,EAAOC,EAASG,GAErC,OAAOK,OAAOC,KAAKZ,GAAOK,MAAKQ,IAE7B,GAAKX,EAAMY,SAOX,OAAOC,QAAQC,IAAId,EAAMY,UAAUT,MAAKY,GAE/BJ,EAAMK,MAAMf,GAASE,MAAKc,IAE3BA,GAEcA,EAAiBC,QAAQJ,IAAI,UAC7BV,EAASc,QAAQJ,IAAI,SAGnCC,EAAOI,YAAY,CACjBC,QAAS,mBACTC,IAAKpB,EAAQoB,MAKnBV,EAAMW,IAAIrB,EAASG,QAvBrBO,EAAMW,IAAIrB,EAASG,MAqCjBmB,CAAcvB,EAAOC,EAASK,IAIlC,OAAOF,KAYX,SAASoB,EAAUxB,EAAOC,GACxB,OAAOQ,OAAOC,KAAKZ,GAAOK,MAAKQ,GACtBA,EAAMK,MAAMf,GAASE,MAAKsB,GACxBA,GAAYC,QAAQC,OAAO,oBAKxCC,KAAKC,iBAAiB,WAAW7B,IAC/BA,EAAMQ,UArFCC,OAAOC,KAAKZ,GAAOK,MAAK,SAASQ,GACtC,OAAOA,EAAMmB,OAAO,CAClB,SACA,8BACA,oBACA,wBACA,mBACA,uBACA,qBACA,oBACA,sBACA,sBACA,kBACA,yBACCC,OAAMC,GAAOC,QAAQC,MAAM,iBAAkBF,SA2ElDJ,KAAKO,iBAGPP,KAAKC,iBAAiB,YAAY,SAAS7B,GACzCA,EAAMQ,UAAUoB,KAAKf,QAAQuB,YAK/BR,KAAKC,iBAAiB,SAAS,SAAS7B,GAEtC,GAA4B,mBAAxBA,EAAMC,QAAQU,OAAqD,gBAAvBX,EAAMC,QAAQoC,KAC5D,OAGF,MAAMpC,QAAEA,GAAYD,GAEdqB,IAAEA,GAAQpB,EAEhB,GAAI,kDAAkDqC,KAAKjB,GACzDrB,EAAMuC,YACJf,EAAUxB,EAAOC,GACd8B,OAAM,IAAMhC,EAAYC,EAAOC,KAC/B8B,OAAM,IA3CNL,QAAQc,QAAQ,IAAIC,8SAAqB,CAC9CvB,QAAS,CACP,eAAgB,2BAqCpB,CAUA,GAAI,eAAeoB,KAAKjB,GAAM,CAE5B,MAAMqB,EAAgB,IAAIC,QAAQ,UAE5BC,EAAc7C,EAAYC,EAAO0C,GASvC,OAPA1C,EAAMuC,YACJf,EAAUxB,EAAO0C,GACdX,OAAM,IAAMa,UAGjB5C,EAAMQ,UAAUoC,GAKlB,IAAK,eAAeN,KAAKjB,IAAQ,mBAAmBiB,KAAKjB,GAAM,CAC7D,MAAMuB,EAAc7C,EAAYC,EAAOC,GASvC,OAPAD,EAAMuC,YACJf,EAAUxB,EAAOC,GACd8B,OAAM,IAAMa,UAGjB5C,EAAMQ,UAAUoC"}
|
package/CHANGELOG.md
DELETED
|
@@ -1,465 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to [wuffle](https://github.com/nikku/wuffle) are documented here. We use [semantic versioning](http://semver.org/) for releases.
|
|
4
|
-
|
|
5
|
-
## Unreleased
|
|
6
|
-
|
|
7
|
-
_**Note:** Yet to be released changes appear here._
|
|
8
|
-
|
|
9
|
-
## 0.41.5
|
|
10
|
-
|
|
11
|
-
* `CHORE`: push `latest` and `next` tags to [docker hub](https://hub.docker.com/repository/docker/nrehwaldt/wuffle) again
|
|
12
|
-
* `DEPS`: patch bump dependencies
|
|
13
|
-
|
|
14
|
-
## 0.41.4
|
|
15
|
-
|
|
16
|
-
* `CHORE`: control published files via `package.json#files`
|
|
17
|
-
|
|
18
|
-
## 0.41.3
|
|
19
|
-
|
|
20
|
-
* `FIX`: distinguish requested review and commented states for PR participants
|
|
21
|
-
|
|
22
|
-
## 0.41.2
|
|
23
|
-
|
|
24
|
-
* `FIX`: correctly disable loader interaction if hidden
|
|
25
|
-
|
|
26
|
-
## 0.41.1
|
|
27
|
-
|
|
28
|
-
* `FIX`: open external project links with rel=noopener
|
|
29
|
-
|
|
30
|
-
## 0.41.0
|
|
31
|
-
|
|
32
|
-
* `FEAT`: link documentation next to powered by icon
|
|
33
|
-
|
|
34
|
-
## 0.40.1
|
|
35
|
-
|
|
36
|
-
* `FIX`: allow create issue repository hint selection via mouse
|
|
37
|
-
* `FIX`: correct create issue repository hints navigation via keyboard
|
|
38
|
-
|
|
39
|
-
## 0.40.0
|
|
40
|
-
|
|
41
|
-
* `FEAT`: filter board for collaborators
|
|
42
|
-
* `FEAT`: apply board filters with `SHIFT` / `ALT` click modifiers only
|
|
43
|
-
* `FEAT`: add create issue widget ([#65](https://github.com/nikku/wuffle/issues/65))
|
|
44
|
-
* `FEAT`: improve navigation layout
|
|
45
|
-
* `FIX`: workaround Chromium service worker bug ([`f6d20222`](https://github.com/nikku/wuffle/commit/f6d202227979935d3d9b62f1f2f02c43eedd9f54))
|
|
46
|
-
* `CHORE`: adjust board filters
|
|
47
|
-
* `DOCS`: document [board filters](./docs/BOARD_FILTERS.md)
|
|
48
|
-
|
|
49
|
-
### Breaking Changes
|
|
50
|
-
|
|
51
|
-
* Filtering issues on the board via click now consistently requires a `SHIFT` or `ALT` modifier
|
|
52
|
-
|
|
53
|
-
## 0.39.0
|
|
54
|
-
|
|
55
|
-
* `FIX`: do not swallow store import errors ([#114](https://github.com/nikku/wuffle/pull/114))
|
|
56
|
-
* `CHORE`: improve error logging with context ([#114](https://github.com/nikku/wuffle/pull/114))
|
|
57
|
-
* `DEPS`: bump to `probot@11.1.0`
|
|
58
|
-
|
|
59
|
-
## 0.38.1
|
|
60
|
-
|
|
61
|
-
* `FIX`: bump docker file base image to Node@14
|
|
62
|
-
|
|
63
|
-
## 0.38.0
|
|
64
|
-
|
|
65
|
-
* `FEAT`: implement first time setup
|
|
66
|
-
* `FIX`: add `member` permission to app manifest
|
|
67
|
-
* `FIX`: correct app default permmissions
|
|
68
|
-
* `DOCS`: rewrite setup guide
|
|
69
|
-
|
|
70
|
-
## 0.37.0
|
|
71
|
-
|
|
72
|
-
* `FEAT`: allow setup to be executed via app binary
|
|
73
|
-
* `FEAT`: add explicit setup command
|
|
74
|
-
* `FIX`: make `mkdirp` a production dependency
|
|
75
|
-
* `CHORE`: use leak free in memory session store
|
|
76
|
-
|
|
77
|
-
## 0.36.0
|
|
78
|
-
|
|
79
|
-
* `FEAT`: fetch user access repositories with max page size
|
|
80
|
-
* `FEAT`: rework S3 data dump
|
|
81
|
-
* `CHORE`: bump to `probot@11` ([`9e4c9339`](https://github.com/nikku/wuffle/commit/9e4c933910db82ef2e4416e2a9ea42a749d78d2b), [`cc8ad79a`](https://github.com/nikku/wuffle/commit/cc8ad79a9845e5447cc090332da96bb49c7bed3c))
|
|
82
|
-
* `CHORE`: require Node@14 ([`45a335a7`](https://github.com/nikku/wuffle/commit/45a335a77b700b90abf088ec426867cc69504f30))
|
|
83
|
-
* `DOCS`: add missing configuration entries
|
|
84
|
-
|
|
85
|
-
### Breaking Changes
|
|
86
|
-
|
|
87
|
-
* `probot@11` update changes some internal APIs as well as webhook data
|
|
88
|
-
* Persistent S3 task board storage requires `env.S3_REGION` to be configured
|
|
89
|
-
* Minimal required NodeJS version is now 14
|
|
90
|
-
|
|
91
|
-
## 0.35.5
|
|
92
|
-
|
|
93
|
-
* `CHORE`: patch bump dependency versions
|
|
94
|
-
|
|
95
|
-
## 0.35.4
|
|
96
|
-
|
|
97
|
-
* `FIX`: correct login session not being established during initial app login
|
|
98
|
-
* `CHORE`: add ability to disable background sync using environment variable
|
|
99
|
-
* `CHORE`: relax same-site cookie setting
|
|
100
|
-
|
|
101
|
-
## 0.35.3
|
|
102
|
-
|
|
103
|
-
* `FIX`: correct fetching of authenticated user repositories
|
|
104
|
-
|
|
105
|
-
## 0.35.2
|
|
106
|
-
|
|
107
|
-
* `FIX`: correct _last month_ temporal filter completion
|
|
108
|
-
|
|
109
|
-
## 0.35.1
|
|
110
|
-
|
|
111
|
-
* `FIX`: prevent long milestone labels from overflowing card
|
|
112
|
-
* `FIX`: relax secure cookie setting
|
|
113
|
-
* `CHORE`: allow to configure `TRUST_PROXY` to enable secure cookies
|
|
114
|
-
|
|
115
|
-
## 0.35.0
|
|
116
|
-
|
|
117
|
-
* `FEAT(events-sync)`: support repository renaming ([#102](https://github.com/nikku/wuffle/issues/102))
|
|
118
|
-
* `FEAT(events-sync)`: support issue transfer ([#92](https://github.com/nikku/wuffle/issues/92))
|
|
119
|
-
* `FEAT(search)`: add `is:milestoned` filter ([`f6798cf3`](https://github.com/nikku/wuffle/commit/f6798cf39b31272d3474f29a1bc028e5d8003b01))
|
|
120
|
-
* `FEAT(search)`: add `involves` filter ([#100](https://github.com/nikku/wuffle/issues/100))
|
|
121
|
-
* `FEAT(search)`: add `created` and `updated` filters ([#98](https://github.com/nikku/wuffle/issues/98))
|
|
122
|
-
* `FEAT(search)`: add `author` filter ([#97](https://github.com/nikku/wuffle/issues/97))
|
|
123
|
-
* `FEAT(app)`: harden session cookie ([`b16639b5`](https://github.com/nikku/wuffle/commit/b16639b560af0d49b3b6c17af293e12700dbc1f8))
|
|
124
|
-
* `FIX(background-sync)`: improve handling of removed repositories ([#101](https://github.com/nikku/wuffle/pull/101), [#93](https://github.com/nikku/wuffle/issues/93), [#90](https://github.com/nikku/wuffle/issues/90))
|
|
125
|
-
* `CHORE(app)`: introduce type linting and cleanup `events` API ([#96](https://github.com/nikku/wuffle/issues/96))
|
|
126
|
-
|
|
127
|
-
### Breaking Changes
|
|
128
|
-
|
|
129
|
-
* The API of the `events` service changed. For all APIs that take a priority the priority is now the optional, last argument.
|
|
130
|
-
|
|
131
|
-
## 0.34.0
|
|
132
|
-
|
|
133
|
-
* `FEAT`: support `convert_to_draft` webhook to move PR back to IN_PROGESS ([#86](https://github.com/nikku/wuffle/issues/86))
|
|
134
|
-
* `CHORE`: propagate user-access read errors
|
|
135
|
-
* `CHORE`: back-off periodic checks on error
|
|
136
|
-
|
|
137
|
-
## 0.33.1
|
|
138
|
-
|
|
139
|
-
* `FIX`: do not fail search on missing assignees
|
|
140
|
-
* `CHORE`: make issue search fail safe
|
|
141
|
-
|
|
142
|
-
## 0.33.0
|
|
143
|
-
|
|
144
|
-
* `FEAT`: log out user on wuffle once her GitHub access token expired
|
|
145
|
-
* `FIX`: correctly handle invalid issue when updating store
|
|
146
|
-
|
|
147
|
-
## 0.32.0
|
|
148
|
-
|
|
149
|
-
* `FEAT`: various performance improvements for logged in board access ([`2fe40483`](https://github.com/nikku/wuffle/commit/2fe404834c8b291335079c782dff1bbc7d2015f5), [`de5403da`](https://github.com/nikku/wuffle/commit/de5403da7eb7dc5dde71ded3add6f08e1ed7ff27))
|
|
150
|
-
* `FEAT`: use app APIs to determine user repository access ([`579743a9`](https://github.com/nikku/wuffle/commit/579743a9002873a2a22f6116debfbcf335f5e7ed))
|
|
151
|
-
* `FIX`: account for GitHub API changes breaking private repository display ([#80](https://github.com/nikku/wuffle/issues/80))
|
|
152
|
-
* `CHORE`: bump dependency versions
|
|
153
|
-
|
|
154
|
-
## 0.31.0
|
|
155
|
-
|
|
156
|
-
* `FEAT`: be able to specify default column collapsed state
|
|
157
|
-
* `FIX`: prevent collapsed columns from breaking layout
|
|
158
|
-
* `FIX`: correct collapsed column layout in Firefox
|
|
159
|
-
|
|
160
|
-
## 0.30.0
|
|
161
|
-
|
|
162
|
-
* `FEAT`: support `connects` to create parent -> child relationship ([#78](https://github.com/nikku/wuffle/pull/78))
|
|
163
|
-
* `FEAT`: add ability to whitelist enabled organizations ([#75](https://github.com/nikku/wuffle/issues/75))
|
|
164
|
-
* `CHORE`: add sentry support, [inherited from Probot](https://probot.github.io/docs/deployment/#error-tracking)
|
|
165
|
-
* `CHORE`: board update errors with context
|
|
166
|
-
* `CHORE`: ensure the app restores before completing startup
|
|
167
|
-
* `CHORE`: serialize board version on store dump
|
|
168
|
-
* `FIX`: do not bump `updated_at` when synchronizing issue details
|
|
169
|
-
* `FIX`: correct status sync failure on PR open
|
|
170
|
-
* `FIX`: don't swallow changes on concurrent store updates
|
|
171
|
-
* `FIX`: prevent accidental double background sync
|
|
172
|
-
* `FIX`: handle deleted forks in pull request filters ([`2b40281f`](https://github.com/nikku/wuffle/commit/2b40281f756e31e16ced2b4a644d0f20784c03d8))
|
|
173
|
-
|
|
174
|
-
## 0.29.0
|
|
175
|
-
|
|
176
|
-
* `FEAT`: improve background synchronization of pull request details ([#70](https://github.com/nikku/wuffle/issues/70))
|
|
177
|
-
* `FEAT`: make background synchronization configurable via environment variables
|
|
178
|
-
|
|
179
|
-
## 0.28.0
|
|
180
|
-
|
|
181
|
-
* `FEAT`: recognize full list of GitHub closes keywords ([#73](https://github.com/nikku/wuffle/pull/73))
|
|
182
|
-
* `FEAT`: recognize colon in issue links ([#73](https://github.com/nikku/wuffle/pull/73))
|
|
183
|
-
* `CHORE`: feat with maximum page size during background sync to avoid hitting GitHub rate limits
|
|
184
|
-
|
|
185
|
-
_Special thanks goes to [@mjcarroll](https://github.com/mjcarroll) for contributing [#73](https://github.com/nikku/wuffle/pull/73)._
|
|
186
|
-
|
|
187
|
-
## 0.27.0
|
|
188
|
-
|
|
189
|
-
* `FEAT`: reindex store on board configuration changes ([#69](https://github.com/nikku/wuffle/pull/69), [#49](https://github.com/nikku/wuffle/issues/49))
|
|
190
|
-
* `FEAT`: allow to hook into store restore and serialize
|
|
191
|
-
|
|
192
|
-
## 0.26.1
|
|
193
|
-
|
|
194
|
-
* `FIX(app)`: deduplicate check runs by name ([#66](https://github.com/nikku/wuffle/pull/66))
|
|
195
|
-
|
|
196
|
-
## 0.26.0
|
|
197
|
-
|
|
198
|
-
* `FEAT`: integrate pull request checks and statuses ([#41](https://github.com/nikku/wuffle/issues/41))
|
|
199
|
-
* `FEAT(board)`: provide better link titles ([`77cf5b2d`](https://github.com/nikku/wuffle/commit/77cf5b2d2374005bb6d4532d596bcb48d0129cfc))
|
|
200
|
-
* `FEAT(board)`: add limited offline support
|
|
201
|
-
* `FEAT(board)`: improve error handling and recovery
|
|
202
|
-
* `FEAT(board)`: cache assets in front-end
|
|
203
|
-
* `FEAT(board)`: make header responsive
|
|
204
|
-
* `FIX(app)`: correct label update ([`3ff74c22`](https://github.com/nikku/wuffle/commit/3ff74c222f7547448f7913300fcfde2abfb9bf4d))
|
|
205
|
-
* `FIX(app)`: update card on `pull_request.synchronize`, too
|
|
206
|
-
|
|
207
|
-
### Breaking Changes
|
|
208
|
-
|
|
209
|
-
* The app requires read access to checks and statuses as well as the connected event subscriptions in order to display pull request states ([#41](https://github.com/nikku/wuffle/issues/41)).
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
## 0.25.1
|
|
213
|
-
|
|
214
|
-
* `DOCS`: align app with project documentation
|
|
215
|
-
|
|
216
|
-
## 0.25.0
|
|
217
|
-
|
|
218
|
-
* `FEAT`: publish as `wuffle` to npm
|
|
219
|
-
* `FEAT`: validate presence of compiled board assets
|
|
220
|
-
* `FEAT(app)`: log working directory when starting
|
|
221
|
-
* `CHORE`: compile board assets to app
|
|
222
|
-
* `CHORE(app)`: resolve `wuffle.config.js` in working directory
|
|
223
|
-
|
|
224
|
-
## 0.24.2
|
|
225
|
-
|
|
226
|
-
* `CHORE(board)`: reduce amount of unused styles
|
|
227
|
-
|
|
228
|
-
## 0.24.1
|
|
229
|
-
|
|
230
|
-
* `CHORE(board)`: add more a11y hints
|
|
231
|
-
* `FIX`: correctly handle dismissed reviews
|
|
232
|
-
|
|
233
|
-
## 0.24.0
|
|
234
|
-
|
|
235
|
-
* `FIX(board)`: ensure long card titles do not kill card layout
|
|
236
|
-
* `FEAT(board)`: give card links full prominence
|
|
237
|
-
* `FEAT(board)`: show assignees collapsed and expand them as needed
|
|
238
|
-
|
|
239
|
-
## 0.23.0
|
|
240
|
-
|
|
241
|
-
* `FEAT(app)`: integrate reviews ([#22](https://github.com/nikku/wuffle/issues/22))
|
|
242
|
-
* `FEAT(app)`: pick up milestone edits ([#46](https://github.com/nikku/wuffle/issues/46))
|
|
243
|
-
* `FEAT(app)`: pick up label edits
|
|
244
|
-
* `FEAT(app)`: allow partial issue updates
|
|
245
|
-
* `FEAT(background-sync)`: add ability to hook up external behaviors
|
|
246
|
-
* `FEAT(background-sync)`: batch update issues ([`1958c9d3`](https://github.com/nikku/wuffle/commit/1958c9d3e8a968d93f0779d99210be7ab1538069))
|
|
247
|
-
* `FEAT(board)`: hide merged, non-closing PRs from cards ([`06794aa5`](https://github.com/nikku/wuffle/commit/06794aa54c745d85518473b5c1541c63512c7c57))
|
|
248
|
-
* `FEAT(board)`: add numerous UI hints
|
|
249
|
-
* `FEAT(board)`: improve assignee display
|
|
250
|
-
* `FEAT(board)`: slightly adjust board styles, making it more pleasent to look at
|
|
251
|
-
* `FEAT(store)`: serialize store updates ([`a5bdcbe5`](https://github.com/nikku/wuffle/commit/a5bdcbe5927b2e35fdd95d38463399ac5e32eea3))
|
|
252
|
-
|
|
253
|
-
## 0.22.0
|
|
254
|
-
|
|
255
|
-
* `FEAT(search)`: include login/org in repository search
|
|
256
|
-
* `FEAT(search)`: use includes to filter labels and repositories
|
|
257
|
-
* `FEAT(board)`: deep link milestone to GitHub
|
|
258
|
-
* `FIX(board)`: correct icon sizes displaying wrong in Firefox ([#48](https://github.com/nikku/wuffle/pull/48))
|
|
259
|
-
|
|
260
|
-
## 0.21.0
|
|
261
|
-
|
|
262
|
-
* `FEAT(app)`: reduce re-ordering noise on the board by card order, if possible ([`62bea58d`](https://github.com/nikku/wuffle/commit/62bea58d447fcab6a5e64479e768f22828051c32))
|
|
263
|
-
* `FEAT(app)`: do not move referenced issues via board ([`260d1e8a`](https://github.com/nikku/wuffle/commit/260d1e8a1077eaacf195a6b880fb870bd11f95c8))
|
|
264
|
-
* `FEAT(board)`: provide card link titles
|
|
265
|
-
* `FEAT(board)`: make card link icons and PR / epic icons clickable
|
|
266
|
-
* `FEAT(board)`: show blocking links first in list
|
|
267
|
-
* `FEAT(board)`: make title read-only
|
|
268
|
-
* `FEAT(board)`: visualize open required by / closes issues as standard link types
|
|
269
|
-
* `FIX(app)`: only move issues to top that move to new column
|
|
270
|
-
|
|
271
|
-
## 0.20.0
|
|
272
|
-
|
|
273
|
-
* `FEAT(board)`: make click on issue numbers open the issue on GitHub as the default interaction again ([#35](https://github.com/nikku/wuffle/issues/35))
|
|
274
|
-
* `FEAT(board)`: make filtering by issue reference, tag or milestone available as `SHIFT` / `CTRL` + click
|
|
275
|
-
* `FEAT(board)`: make consecutive click on reference, tag or milestone toggle the relevant filter
|
|
276
|
-
* `FEAT(board)`: escape card dragging on `ESC` key
|
|
277
|
-
|
|
278
|
-
## 0.19.1
|
|
279
|
-
|
|
280
|
-
* `DOCS`: add troubleshooting document
|
|
281
|
-
* `DOCS`: document column to state mappings
|
|
282
|
-
|
|
283
|
-
## 0.19.0
|
|
284
|
-
|
|
285
|
-
* `FEAT(app)`: handle PRs from external like new issues ([`8e0919d5`](https://github.com/nikku/wuffle/commit/8e0919d5358d1642bde2c08f138b4d1385bc1745))
|
|
286
|
-
* `FEAT(app)`: allow alternative column names and explicit state mappings ([`c2575b32`](https://github.com/nikku/wuffle/commit/c2575b3246195106a7c7a95c919cc2315c39a6fc))
|
|
287
|
-
* `FEAT(app)`: validate board configuration ([#39](https://github.com/nikku/wuffle/issues/39))
|
|
288
|
-
* `FEAT(app)`: crash on run failure ([`2d2ac864`](https://github.com/nikku/wuffle/commit/2d2ac864c31822546a7de7b25c3a375119a32048))
|
|
289
|
-
|
|
290
|
-
## 0.18.0
|
|
291
|
-
|
|
292
|
-
* `FEAT(app)`: recognize list of linked issues with the same type
|
|
293
|
-
* `DOCS`: document login callback url
|
|
294
|
-
* `FIX(auth-routes)`: gracefully handle missing cached data in auth callback
|
|
295
|
-
|
|
296
|
-
## 0.17.0
|
|
297
|
-
|
|
298
|
-
* `FEAT(background-sync)`: ignore archived repositories
|
|
299
|
-
* `FEAT(apps/dump-store)`: allow usage of local dump store outside dev mode
|
|
300
|
-
* `CHORE`: [di-ify](https://github.com/nikku/async-didi) app core
|
|
301
|
-
|
|
302
|
-
### Breaking Changes
|
|
303
|
-
|
|
304
|
-
* We restructured internals and made apps expose their own APIs. Things changed.
|
|
305
|
-
|
|
306
|
-
## 0.16.0
|
|
307
|
-
|
|
308
|
-
* `FEAT`: connect all repositories connected to GitHub app
|
|
309
|
-
|
|
310
|
-
### Breaking Changes
|
|
311
|
-
|
|
312
|
-
* `config.repositories` is now obsolete
|
|
313
|
-
* The board does not default to a repository for its name, configure a board name via `config.name`
|
|
314
|
-
|
|
315
|
-
## 0.15.1
|
|
316
|
-
|
|
317
|
-
* `FIX(app)`: capture requested reviewer changes
|
|
318
|
-
|
|
319
|
-
## 0.15.0
|
|
320
|
-
|
|
321
|
-
* `FEAT(app)`: mark column as `sorting=true` to incrementally sort cards based on links ([#29](https://github.com/nikku/wuffle/issues/29))
|
|
322
|
-
* `FIX(app)`: correct GitHub app manifest
|
|
323
|
-
* `FIX(board)`: correctly handle reordering updates
|
|
324
|
-
|
|
325
|
-
## 0.14.0
|
|
326
|
-
|
|
327
|
-
* `DOCS`: new setup and run guide :tada:
|
|
328
|
-
* `FIX`: correct various getting started / configuration glitches
|
|
329
|
-
* `FIX`: validate `BASE_URL` in run script
|
|
330
|
-
|
|
331
|
-
## 0.13.0
|
|
332
|
-
|
|
333
|
-
* `FEAT(board)`: filter by tags
|
|
334
|
-
* `FIX(board)`: de-duplicate attached PR links
|
|
335
|
-
* `FIX(app)`: properly update link sources if linked issue changes ([#33](https://github.com/nikku/wuffle/issues/33))
|
|
336
|
-
* `CHORE(app)`: improve start validation and hints
|
|
337
|
-
|
|
338
|
-
## 0.12.0
|
|
339
|
-
|
|
340
|
-
* `FEAT(board)`: add powered by link
|
|
341
|
-
* `FEAT(app)`: allow searching by `ref`
|
|
342
|
-
* `FEAT(app)`: inverse link related to issues
|
|
343
|
-
* `FEAT(board)`: add ability to filter by issue with dependencies
|
|
344
|
-
* `FEAT(board)`: show epic progress bar and completed count ([#27](https://github.com/nikku/wuffle/issues/27))
|
|
345
|
-
* `FIX(apps/search)`: allow more special keys in search
|
|
346
|
-
|
|
347
|
-
## 0.11.0
|
|
348
|
-
|
|
349
|
-
* `FEAT(board)`: display issue links ([#3](https://github.com/nikku/wuffle/issues/3))
|
|
350
|
-
* `FEAT(board)`: display full issue key on hover
|
|
351
|
-
* `FEAT(board)`: add epic icon and links ([#30](https://github.com/nikku/wuffle/pull/30))
|
|
352
|
-
* `FEAT(app)`: add new/updated issues without order to column top
|
|
353
|
-
* `FEAT(project)`: add [docker image](https://hub.docker.com/r/nrehwaldt/wuffle)
|
|
354
|
-
* `FIX(board)`: allow scrolling while dragging card
|
|
355
|
-
|
|
356
|
-
## 0.10.0
|
|
357
|
-
|
|
358
|
-
* `FEAT(app)`: add ability to force HTTPS redirect
|
|
359
|
-
* `FEAT(project)`: provide pre-built docker images ([#25](https://github.com/nikku/wuffle/issues/25))
|
|
360
|
-
* `FEAT(app)`: add run script
|
|
361
|
-
* `FEAT(app)`: validate environment configuration before start
|
|
362
|
-
* `FIX(app)`: expose required information for deleted issues
|
|
363
|
-
* `DOCS(project)`: document environment variables
|
|
364
|
-
|
|
365
|
-
## 0.9.0
|
|
366
|
-
|
|
367
|
-
* `FEAT(project)`: add `Procfile`
|
|
368
|
-
* `FIX(dump-store-s3)`: correctly handle inbound data
|
|
369
|
-
* `CHORE(dump-store-s3)`: set dump interval to five minutes
|
|
370
|
-
* `CHORE(dump-store*)`: log pre-exit actions and timings
|
|
371
|
-
|
|
372
|
-
## 0.8.2
|
|
373
|
-
|
|
374
|
-
* `FIX(search)`: recognize `_` in search values
|
|
375
|
-
* `FIX(automatic-dev-flow)`: correct branch issue number globbing
|
|
376
|
-
|
|
377
|
-
## 0.8.1
|
|
378
|
-
|
|
379
|
-
* `FIX(search)`: recognize dashes search values
|
|
380
|
-
|
|
381
|
-
## 0.8.0
|
|
382
|
-
|
|
383
|
-
* `FEAT(background-sync)`: update only actually changed items
|
|
384
|
-
* `FEAT(search)`: add `is:{ open, closed, issue, pull }` filters
|
|
385
|
-
* `FEAT(search)`: ignore operators with empty values
|
|
386
|
-
* `FEAT(board)`: focus board filter on `CTRL/CMD + F`
|
|
387
|
-
* `FEAT(board)`: complete board filter qualifier values
|
|
388
|
-
|
|
389
|
-
## 0.7.0
|
|
390
|
-
|
|
391
|
-
* `FEAT(background-sync)`: improve sync performance for closed issues
|
|
392
|
-
* `FEAT(background-sync)`: expire and remove closed issues not updated for 60 days
|
|
393
|
-
* `FEAT(board)`: simplify board filter
|
|
394
|
-
* `FEAT(board)`: add initial focus hint to board filter
|
|
395
|
-
* `FEAT(search)`: put negation char before operator
|
|
396
|
-
* `FEAT(search)`: support `!` to negate a search operator
|
|
397
|
-
* `FIX(dump-store)`: correct store not dumping on exit
|
|
398
|
-
|
|
399
|
-
## 0.6.0
|
|
400
|
-
|
|
401
|
-
* `FEAT(search)`: add ability to negate search using `-`
|
|
402
|
-
* `FEAT(links)`: unlink closed, unmerged PRs from issue
|
|
403
|
-
* `FEAT(board)`: autoresize card titles on focus
|
|
404
|
-
* `FIX(board)`: prevent shrinking of PR and collaborator icons
|
|
405
|
-
|
|
406
|
-
## 0.5.1
|
|
407
|
-
|
|
408
|
-
* `FIX(board)`: prevent error on card filtering
|
|
409
|
-
|
|
410
|
-
## 0.5.0
|
|
411
|
-
|
|
412
|
-
* `FEAT(app)`: optimize card fetching
|
|
413
|
-
* `CHORE(app)`: cache board
|
|
414
|
-
* `FEAT(board)`: incrementally render cards
|
|
415
|
-
* `FIX(search)`: recognize colons in search values
|
|
416
|
-
|
|
417
|
-
## 0.4.1
|
|
418
|
-
|
|
419
|
-
* `CHORE`: numerous error handling and logging improvements
|
|
420
|
-
* `CHORE`: propagate board api errors
|
|
421
|
-
* `CHORE`: recover from background sync failures
|
|
422
|
-
* `FIX`: correctly handle _related to_ links
|
|
423
|
-
* `FIX`: update all (including already existing) links
|
|
424
|
-
* `FIX`: correctly reset org-auth installation cache
|
|
425
|
-
|
|
426
|
-
## 0.4.0
|
|
427
|
-
|
|
428
|
-
#### General
|
|
429
|
-
|
|
430
|
-
* `FEAT`: remove issues that failed to synchronize during background sync
|
|
431
|
-
* `FEAT`: parse and publish issue links
|
|
432
|
-
|
|
433
|
-
#### Board
|
|
434
|
-
|
|
435
|
-
* `FEAT`: collapse issue and closing PR into single card
|
|
436
|
-
* `FEAT`: add pull request icon
|
|
437
|
-
|
|
438
|
-
## 0.3.0
|
|
439
|
-
|
|
440
|
-
#### General
|
|
441
|
-
|
|
442
|
-
* `FEAT`: combine front-end and back-end into single app
|
|
443
|
-
* `FEAT`: migrate front-end to [Svelte](https://svelte.dev) and [Bootstrap](https://getbootstrap.com)
|
|
444
|
-
* `FEAT`: dump store on exit
|
|
445
|
-
* `FEAT`: add ability to dump and restore store to/from S3
|
|
446
|
-
* `FEAT`: enable response compression for public routes
|
|
447
|
-
* `FEAT`: add ability to configure board via `BOARD_CONFIG` environment variable
|
|
448
|
-
* `FEAT`: minimize amout of stored / transfered data
|
|
449
|
-
* `FIX`: allow moving a card to end of column
|
|
450
|
-
|
|
451
|
-
#### Search
|
|
452
|
-
|
|
453
|
-
* `FEAT`: show search hints as you type
|
|
454
|
-
* `FEAT`: show incremental / partial search results
|
|
455
|
-
* `FEAT`: add search by reviewer
|
|
456
|
-
|
|
457
|
-
#### Cards
|
|
458
|
-
|
|
459
|
-
* `FEAT`: hide column labels
|
|
460
|
-
* `FEAT`: display reviewers
|
|
461
|
-
* `FEAT`: display all assignees
|
|
462
|
-
|
|
463
|
-
## 0.2.0
|
|
464
|
-
|
|
465
|
-
_Initial version._
|