All notable changes to wuffle are documented here. We use semantic versioning for releases.
Note: Yet to be released changes appear here.
DEPS: update toprobot@14(#321)CHORE: requirenode >= 24to run
FEAT: support GitHub sub-issues (#313)FEAT: validate GitHub application on startup (#313)DEPS: update tobody-parser@2.3.0
- Application requires
sub_issuesevents for full synchronization to work
FEAT: synchronize standard fields for comment authorsCHORE: various internal typing and documentation improvements
FEAT: synchronize data onpull_request.milestonedandpull_request.demilestonedCHORE: log events in original formatCHORE: reorganize core components into modulesCHORE: correctEventsSynclogger nameCHORE: debug log skipped re-indexingCHORE: improveGithubApptypings
FEAT: only background sync details for updated issues (#299)FIX: ensure details sync adheres toignoreFilter(#299, #298)
FIX: correct filtering with user scope (@me) (#294)
FEAT: computeis:approvedfrom effective reviews (#292)FEAT: count only collaborators as reviewers (#291)FEAT: count only humans as reviewers per default (#281, #290)FEAT: synchronize usertype(#290)FEAT: synchronize issue/pr/reviewauthor_association(#291)FIX: correct links to always reference respective pull request or issue URL (#288)DEPS: update tomemorystore@1.6.8
FEAT: supportAND,ORandNOTsearch operators (#283)FEAT: support search grouping via()(#283)CHORE: reworksearchinner workings (#283)DEPS: update to@aws-sdk/client-s3@3.1037.0
DEPS: removemkdirpdependency
DEPS: update toexpress-session@1.19.0DEPS: update tobody-parser@2.2.2DEPS: update to@aws-sdk/client-s3@3.1014.0DEPS: update toasync-didi@1.0.0DEPS: update tomin-dash@5.0.0
FEAT: allow custom board description (#255)FIX: correct notification spacing (#256)FIX: correct notification theming in dark mode (#256)CHORE: update tonode@24
FEAT: add a dark mode (#254)
FIX: de-duplicate displayed warnings
FIX: show PRs linked to issues, if they are in separate columns (#245)CHORE: requirenode >= 20DEPS: update tocompression@1.8.1DEPS: update toexpress-session@1.18.2DEPS: update to@bpmn-io/draggle@4.1.2DEPS: update tomin-dash@4.2.3
DEPS: update tocompression@1.8.0DEPS: update tosmee-client@3.1.1DEPS: update toprobot@13.4.5DEPS: update tobody-parser@2.2.0
FIX: correct scrollable container stylingCHORE: migrate board to usesvelte@5CHORE: register service worker outside of main bundleDEPS: update top-defer@4.0.1DEPS: update toprobot@13.4.1DEPS: update toprexit@2.3.0
FIX: clean up open PRs that were not found on GitHub (#216)DEPS: update tocompression@1.7.1DEPS: update toexpress-session@1.18.1
FEAT: suggest@mefor all user filters (#193)FIX: prevent double commit of filter suggestion (#194)
FEAT: suggestassignee:@mefilterFIX: avatars get properly cachedFIX: click on filter suggestion applies it again (#190)FIX: prevent blank page after login/logoutFIX: correctly handle connection errors during login checkFIX: make help menu keyboard accessibleFIX: turn example config into ES module
DEPS: update toprobot@13.0.2DEPS: update to@octokit/graphql-schema@15DEPS: update to@aws-sdk/client-s3@3.525.0
FEAT: use nativefetchCHORE: requireNode >= 18
Node >= 18is required to run the board
FEAT: turn into ES moduleCHORE: correct various type hintsDEPS: updatefake-tag@5DEPS: updatep-defer@4DEPS: update toprexit@2
- Refactoring of the code base, exposing services as ES modules
FEAT: improve guided setup stepsFIX: correct setup not working due tohbsmissing (#175)FIX: do not cache setup resourcesDEPS: update toprobot@13DEPS: update dependencies
- Webhook URL changed to
{BASE_URL}/api/github/webhooks
FEAT: addfifocolumn ordering as an alternative to the defaultlifoDEPS: update dependencies
FIX: correct handling of non-http(s) requests in service worker (#161)
FEAT: supportPRIVATE_KEY_PATHto supply keyDEPS: update dependencies
FEAT: variousa11yimprovementsDEPS: update dependencies
FEAT: move issue toneeds_reviewcolumn on review request (#156)FEAT: filter terms in quotes strictlyFEAT: add ability to provide a default board filterFIX: slightly adjust scroller padding
FIX: remove unknown file from eager cache listFIX: add missing link titleCHORE: pre-render 15 cards only
FEAT: preload board configurationCHORE: remove unnecessaryaria-*labels
FEAT: supportissue#state_reason
CHORE: simplify board descriptionDOCS: improve various bits of the documentation
FEAT: make filter available throughctrl + kFEAT: show all board filter hints in scrollable containerFEAT: improve scrollbars + paddingsFEAT: improve column toggleFIX: clear mouse on filter changeFIX: only select hint on primary mouse button clickFIX: correct filters not hiding on blurFIX: correct logging of missing permissions/events (#145)
FIX: do not attach closed, unmerged PRs
FIX: correct tag contrast
FEAT: overhaul icons, card, and tag UI (#144)FEAT: add ability to link issue comments from within a task breakdown (#144)FEAT: allow PRs to be attached to task break downs (#144)FEAT: add keyboard shortcuts documentation (#140)FIX: prevent creation of self-referencing links (#143)
FEAT: addlshortcut to toggle loginFEAT: do not establishCHILD_OFrelationship through deep links (#138)FIX: gracefully handle missing asset folder indev
FIX: don't necrobump closed issues on{SOME_NUMBER}-branchcreation (#137)
FEAT: support@mein search to reference logged-in user (#133)FEAT: support relative@today,@last_weekand@last_monthtemporal qualifiers (#134)FIX: recognize comma in quoted search values (#135)
FIX: mark app as Node@16 compatible, again
FIX: correct first time setup (#131)DEPS: bump dependencies
FIX: gracefully handle missing assignee
FEAT: move changes requested collaborator PRs back toIN_PROGRESS(#128)FEAT: add ability to auto-assign collaborator PRs (#129)FEAT: provide way to use existingassigneefilter on PRs (#125)FIX: react topull_request.converted_to_draftFIX: correct avatar sizing
FEAT: allow customS3_ENDPOINTto be configured (#127)
CHORE: improve board API error logging (04015630)
FIX: sendreviewsinformation to the board
FEAT: addis:epicfilterFEAT: persist column toggle state in query parameters
FIX: gracefully handle missingrequested_reviewers
FIX: sendcheck_runsandstatusesinformation to the board
FIX: account for absence ofuser
FIX: account forcommentsbeing a number in the pastFIX: sendorder,column_labelandcolumninformation to board
FEAT: reduce payload of transferred board data (d76db5c0)
FEAT: support GitHub style task breakdowns to create epics (#118)FEAT: add and remove labels, rather than overriding (#77)FEAT: color draft PRs differently (e134cb81)CHORE: update toprobot@12
FIX: correct style overrides (milestone style, ...)FIX: correct board filter not maximizing responsively
FIX: gracefully handle missinghtml_url(6651df27)
FEAT: synchronize issue comments (#94)FEAT: display commented in collaborator links (#94)FEAT: adjust requested for review indicator to match GitHub (7c84c49a)FEAT: necrobump issues on commented (070aaffd)FEAT: fetch and use GitHub providedhtml_urlfor entities (#121)FEAT: link author avatar to GitHub (72cf233a)CHORE: useProbotApp#onAny(ed1b2248)DEPS: bump toprobot@11.4.1DEPS: bump dependencies
- Introduction of comments as well as
html_urlrequires a full background sync
CHORE: pushlatestandnexttags to docker hub againDEPS: patch bump dependencies
CHORE: control published files viapackage.json#files
FIX: distinguish requested review and commented states for PR participants
FIX: correctly disable loader interaction if hidden
FIX: open external project links with rel=noopener
FEAT: link documentation next to powered by icon
FIX: allow create issue repository hint selection via mouseFIX: correct create issue repository hints navigation via keyboard
FEAT: filter board for collaboratorsFEAT: apply board filters withSHIFT/ALTclick modifiers onlyFEAT: add create issue widget (#65)FEAT: improve navigation layoutFIX: workaround Chromium service worker bug (f6d20222)CHORE: adjust board filtersDOCS: document board filters
- Filtering issues on the board via click now consistently requires a
SHIFTorALTmodifier
FIX: do not swallow store import errors (#114)CHORE: improve error logging with context (#114)DEPS: bump toprobot@11.1.0
FIX: bump docker file base image to Node@14
FEAT: implement first time setupFIX: addmemberpermission to app manifestFIX: correct app default permmissionsDOCS: rewrite setup guide
FEAT: allow setup to be executed via app binaryFEAT: add explicit setup commandFIX: makemkdirpa production dependencyCHORE: use leak free in memory session store
FEAT: fetch user access repositories with max page sizeFEAT: rework S3 data dumpCHORE: bump toprobot@11(9e4c9339,cc8ad79a)CHORE: require Node@14 (45a335a7)DOCS: add missing configuration entries
probot@11update changes some internal APIs as well as webhook data- Persistent S3 task board storage requires
env.S3_REGIONto be configured - Minimal required NodeJS version is now 14
CHORE: patch bump dependency versions
FIX: correct login session not being established during initial app loginCHORE: add ability to disable background sync using environment variableCHORE: relax same-site cookie setting
FIX: correct fetching of authenticated user repositories
FIX: correct last month temporal filter completion
FIX: prevent long milestone labels from overflowing cardFIX: relax secure cookie settingCHORE: allow to configureTRUST_PROXYto enable secure cookies
FEAT(events-sync): support repository renaming (#102)FEAT(events-sync): support issue transfer (#92)FEAT(search): addis:milestonedfilter (f6798cf3)FEAT(search): addinvolvesfilter (#100)FEAT(search): addcreatedandupdatedfilters (#98)FEAT(search): addauthorfilter (#97)FEAT(app): harden session cookie (b16639b5)FIX(background-sync): improve handling of removed repositories (#101, #93, #90)CHORE(app): introduce type linting and cleanupeventsAPI (#96)
- The API of the
eventsservice changed. For all APIs that take a priority the priority is now the optional, last argument.
FEAT: supportconvert_to_draftwebhook to move PR back to IN_PROGESS (#86)CHORE: propagate user-access read errorsCHORE: back-off periodic checks on error
FIX: do not fail search on missing assigneesCHORE: make issue search fail safe
FEAT: log out user on wuffle once her GitHub access token expiredFIX: correctly handle invalid issue when updating store
FEAT: various performance improvements for logged in board access (2fe40483,de5403da)FEAT: use app APIs to determine user repository access (579743a9)FIX: account for GitHub API changes breaking private repository display (#80)CHORE: bump dependency versions
FEAT: be able to specify default column collapsed stateFIX: prevent collapsed columns from breaking layoutFIX: correct collapsed column layout in Firefox
FEAT: supportconnectsto create parent -> child relationship (#78)FEAT: add ability to whitelist enabled organizations (#75)CHORE: add sentry support, inherited from ProbotCHORE: board update errors with contextCHORE: ensure the app restores before completing startupCHORE: serialize board version on store dumpFIX: do not bumpupdated_atwhen synchronizing issue detailsFIX: correct status sync failure on PR openFIX: don't swallow changes on concurrent store updatesFIX: prevent accidental double background syncFIX: handle deleted forks in pull request filters (2b40281f)
FEAT: improve background synchronization of pull request details (#70)FEAT: make background synchronization configurable via environment variables
FEAT: recognize full list of GitHub closes keywords (#73)FEAT: recognize colon in issue links (#73)CHORE: feat with maximum page size during background sync to avoid hitting GitHub rate limits
Special thanks goes to @mjcarroll for contributing #73.
FEAT: reindex store on board configuration changes (#69, #49)FEAT: allow to hook into store restore and serialize
FIX(app): deduplicate check runs by name (#66)
FEAT: integrate pull request checks and statuses (#41)FEAT(board): provide better link titles (77cf5b2d)FEAT(board): add limited offline supportFEAT(board): improve error handling and recoveryFEAT(board): cache assets in front-endFEAT(board): make header responsiveFIX(app): correct label update (3ff74c22)FIX(app): update card onpull_request.synchronize, too
- The app requires read access to checks and statuses as well as the connected event subscriptions in order to display pull request states (#41).
DOCS: align app with project documentation
FEAT: publish aswuffleto npmFEAT: validate presence of compiled board assetsFEAT(app): log working directory when startingCHORE: compile board assets to appCHORE(app): resolvewuffle.config.jsin working directory
CHORE(board): reduce amount of unused styles
CHORE(board): add more a11y hintsFIX: correctly handle dismissed reviews
FIX(board): ensure long card titles do not kill card layoutFEAT(board): give card links full prominenceFEAT(board): show assignees collapsed and expand them as needed
FEAT(app): integrate reviews (#22)FEAT(app): pick up milestone edits (#46)FEAT(app): pick up label editsFEAT(app): allow partial issue updatesFEAT(background-sync): add ability to hook up external behaviorsFEAT(background-sync): batch update issues (1958c9d3)FEAT(board): hide merged, non-closing PRs from cards (06794aa5)FEAT(board): add numerous UI hintsFEAT(board): improve assignee displayFEAT(board): slightly adjust board styles, making it more pleasent to look atFEAT(store): serialize store updates (a5bdcbe5)
FEAT(search): include login/org in repository searchFEAT(search): use includes to filter labels and repositoriesFEAT(board): deep link milestone to GitHubFIX(board): correct icon sizes displaying wrong in Firefox (#48)
FEAT(app): reduce re-ordering noise on the board by card order, if possible (62bea58d)FEAT(app): do not move referenced issues via board (260d1e8a)FEAT(board): provide card link titlesFEAT(board): make card link icons and PR / epic icons clickableFEAT(board): show blocking links first in listFEAT(board): make title read-onlyFEAT(board): visualize open required by / closes issues as standard link typesFIX(app): only move issues to top that move to new column
FEAT(board): make click on issue numbers open the issue on GitHub as the default interaction again (#35)FEAT(board): make filtering by issue reference, tag or milestone available asSHIFT/CTRL+ clickFEAT(board): make consecutive click on reference, tag or milestone toggle the relevant filterFEAT(board): escape card dragging onESCkey
DOCS: add troubleshooting documentDOCS: document column to state mappings
FEAT(app): handle PRs from external like new issues (8e0919d5)FEAT(app): allow alternative column names and explicit state mappings (c2575b32)FEAT(app): validate board configuration (#39)FEAT(app): crash on run failure (2d2ac864)
FEAT(app): recognize list of linked issues with the same typeDOCS: document login callback urlFIX(auth-routes): gracefully handle missing cached data in auth callback
FEAT(background-sync): ignore archived repositoriesFEAT(apps/dump-store): allow usage of local dump store outside dev modeCHORE: di-ify app core
- We restructured internals and made apps expose their own APIs. Things changed.
FEAT: connect all repositories connected to GitHub app
config.repositoriesis now obsolete- The board does not default to a repository for its name, configure a board name via
config.name
FIX(app): capture requested reviewer changes
FEAT(app): mark column assorting=trueto incrementally sort cards based on links (#29)FIX(app): correct GitHub app manifestFIX(board): correctly handle reordering updates
DOCS: new setup and run guide 🎉FIX: correct various getting started / configuration glitchesFIX: validateBASE_URLin run script
FEAT(board): filter by tagsFIX(board): de-duplicate attached PR linksFIX(app): properly update link sources if linked issue changes (#33)CHORE(app): improve start validation and hints
FEAT(board): add powered by linkFEAT(app): allow searching byrefFEAT(app): inverse link related to issuesFEAT(board): add ability to filter by issue with dependenciesFEAT(board): show epic progress bar and completed count (#27)FIX(apps/search): allow more special keys in search
FEAT(board): display issue links (#3)FEAT(board): display full issue key on hoverFEAT(board): add epic icon and links (#30)FEAT(app): add new/updated issues without order to column topFEAT(project): add docker imageFIX(board): allow scrolling while dragging card
FEAT(app): add ability to force HTTPS redirectFEAT(project): provide pre-built docker images (#25)FEAT(app): add run scriptFEAT(app): validate environment configuration before startFIX(app): expose required information for deleted issuesDOCS(project): document environment variables
FEAT(project): addProcfileFIX(dump-store-s3): correctly handle inbound dataCHORE(dump-store-s3): set dump interval to five minutesCHORE(dump-store*): log pre-exit actions and timings
FIX(search): recognize_in search valuesFIX(automatic-dev-flow): correct branch issue number globbing
FIX(search): recognize dashes search values
FEAT(background-sync): update only actually changed itemsFEAT(search): addis:{ open, closed, issue, pull }filtersFEAT(search): ignore operators with empty valuesFEAT(board): focus board filter onCTRL/CMD + FFEAT(board): complete board filter qualifier values
FEAT(background-sync): improve sync performance for closed issuesFEAT(background-sync): expire and remove closed issues not updated for 60 daysFEAT(board): simplify board filterFEAT(board): add initial focus hint to board filterFEAT(search): put negation char before operatorFEAT(search): support!to negate a search operatorFIX(dump-store): correct store not dumping on exit
FEAT(search): add ability to negate search using-FEAT(links): unlink closed, unmerged PRs from issueFEAT(board): autoresize card titles on focusFIX(board): prevent shrinking of PR and collaborator icons
FIX(board): prevent error on card filtering
FEAT(app): optimize card fetchingCHORE(app): cache boardFEAT(board): incrementally render cardsFIX(search): recognize colons in search values
CHORE: numerous error handling and logging improvementsCHORE: propagate board api errorsCHORE: recover from background sync failuresFIX: correctly handle related to linksFIX: update all (including already existing) linksFIX: correctly reset org-auth installation cache
FEAT: remove issues that failed to synchronize during background syncFEAT: parse and publish issue links
FEAT: collapse issue and closing PR into single cardFEAT: add pull request icon
FEAT: combine front-end and back-end into single appFEAT: migrate front-end to Svelte and BootstrapFEAT: dump store on exitFEAT: add ability to dump and restore store to/from S3FEAT: enable response compression for public routesFEAT: add ability to configure board viaBOARD_CONFIGenvironment variableFEAT: minimize amout of stored / transfered dataFIX: allow moving a card to end of column
FEAT: show search hints as you typeFEAT: show incremental / partial search resultsFEAT: add search by reviewer
FEAT: hide column labelsFEAT: display reviewersFEAT: display all assignees
Initial version.