diff --git a/.eslintignore b/.eslintignore
index 4ed37ed784..ce0ef00260 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -933,6 +933,7 @@ packages/tools/setupNewRelease.js
packages/tools/spellcheck.js
packages/tools/tagServerLatest.js
packages/tools/tool-utils.js
+packages/tools/update-readme-contributors.js
packages/tools/update-readme-download.test.js
packages/tools/update-readme-download.js
packages/tools/update-readme-sponsors.js
diff --git a/.gitignore b/.gitignore
index dcd8b4e63f..20bb839165 100644
--- a/.gitignore
+++ b/.gitignore
@@ -919,6 +919,7 @@ packages/tools/setupNewRelease.js
packages/tools/spellcheck.js
packages/tools/tagServerLatest.js
packages/tools/tool-utils.js
+packages/tools/update-readme-contributors.js
packages/tools/update-readme-download.test.js
packages/tools/update-readme-download.js
packages/tools/update-readme-sponsors.js
diff --git a/README.md b/README.md
index 0c56d17704..96f9a75647 100644
--- a/README.md
+++ b/README.md
@@ -587,78 +587,93 @@ Thank you to everyone who've contributed to Joplin's source code!
| | | | | |
| :---: | :---: | :---: | :---: | :---: |
-|
[laurent22](https://github.com/laurent22) |
[tessus](https://github.com/tessus) |
[CalebJohn](https://github.com/CalebJohn) |
[mic704b](https://github.com/mic704b) |
[roman-r-m](https://github.com/roman-r-m) |
-|
[genneko](https://github.com/genneko) |
[j-krl](https://github.com/j-krl) |
[tanrax](https://github.com/tanrax) |
[naviji](https://github.com/naviji) |
[PackElend](https://github.com/PackElend) |
-|
[rtmkrlv](https://github.com/rtmkrlv) |
[fmrtn](https://github.com/fmrtn) |
[potatogim](https://github.com/potatogim) |
[devonzuegel](https://github.com/devonzuegel) |
[anjulalk](https://github.com/anjulalk) |
-|
[gabcoh](https://github.com/gabcoh) |
[matsest](https://github.com/matsest) |
[abonte](https://github.com/abonte) |
[Abijeet](https://github.com/Abijeet) |
[ishantgupta777](https://github.com/ishantgupta777) |
-|
[JackGruber](https://github.com/JackGruber) |
[Ardakilic](https://github.com/Ardakilic) |
[rabeehrz](https://github.com/rabeehrz) |
[coderrsid](https://github.com/coderrsid) |
[foxmask](https://github.com/foxmask) |
-|
[innocuo](https://github.com/innocuo) |
[Rahulm2310](https://github.com/Rahulm2310) |
[readingsnail](https://github.com/readingsnail) |
[mablin7](https://github.com/mablin7) |
[XarisA](https://github.com/XarisA) |
-|
[jonath92](https://github.com/jonath92) |
[alexdevero](https://github.com/alexdevero) |
[Runo-saduwa](https://github.com/Runo-saduwa) |
[marcosvega91](https://github.com/marcosvega91) |
[petrz12](https://github.com/petrz12) |
-|
[rnbastos](https://github.com/rnbastos) |
[ProgramFan](https://github.com/ProgramFan) |
[zblesk](https://github.com/zblesk) |
[vsimkus](https://github.com/vsimkus) |
[moltenform](https://github.com/moltenform) |
-|
[nishantwrp](https://github.com/nishantwrp) |
[zuphilip](https://github.com/zuphilip) |
[Rishabh-malhotraa](https://github.com/Rishabh-malhotraa) |
[metbril](https://github.com/metbril) |
[WhiredPlanck](https://github.com/WhiredPlanck) |
-|
[milotype](https://github.com/milotype) |
[yaozeye](https://github.com/yaozeye) |
[ylc395](https://github.com/ylc395) |
[RenatoXSR](https://github.com/RenatoXSR) |
[RedDocMD](https://github.com/RedDocMD) |
-|
[q1011](https://github.com/q1011) |
[amitsin6h](https://github.com/amitsin6h) |
[Atalanttore](https://github.com/Atalanttore) |
[Mannivu](https://github.com/Mannivu) |
[martonpaulo](https://github.com/martonpaulo) |
-|
[mmahmoudian](https://github.com/mmahmoudian) |
[rccavalcanti](https://github.com/rccavalcanti) |
[ShaneKilkelly](https://github.com/ShaneKilkelly) |
[sinkuu](https://github.com/sinkuu) |
[stweil](https://github.com/stweil) |
-|
[conyx](https://github.com/conyx) |
[anihm136](https://github.com/anihm136) |
[archont00](https://github.com/archont00) |
[bradmcl](https://github.com/bradmcl) |
[tfinnberg](https://github.com/tfinnberg) |
-|
[amandamcg](https://github.com/amandamcg) |
[marcushill](https://github.com/marcushill) |
[nathanleiby](https://github.com/nathanleiby) |
[RaphaelKimmig](https://github.com/RaphaelKimmig) |
[Vaso3](https://github.com/Vaso3) |
-|
[sensor-freak](https://github.com/sensor-freak) |
[lkiThakur](https://github.com/lkiThakur) |
[infinity052](https://github.com/infinity052) |
[BartBucknill](https://github.com/BartBucknill) |
[mrwulf](https://github.com/mrwulf) |
-|
[chrisb86](https://github.com/chrisb86) |
[chrmoritz](https://github.com/chrmoritz) |
[Daeraxa](https://github.com/Daeraxa) |
[Elaborendum](https://github.com/Elaborendum) |
[ethan42411](https://github.com/ethan42411) |
-|
[JOJ0](https://github.com/JOJ0) |
[jalajcodes](https://github.com/jalajcodes) |
[jblunck](https://github.com/jblunck) |
[jdrobertso](https://github.com/jdrobertso) |
[Jesssullivan](https://github.com/Jesssullivan) |
-|
[jmontane](https://github.com/jmontane) |
[johanhammar](https://github.com/johanhammar) |
[solariz](https://github.com/solariz) |
[maicki](https://github.com/maicki) |
[mjjzf](https://github.com/mjjzf) |
-|
[rt-oliveira](https://github.com/rt-oliveira) |
[sebastienjust](https://github.com/sebastienjust) |
[sealch](https://github.com/sealch) |
[StarFang208](https://github.com/StarFang208) |
[Subhra264](https://github.com/Subhra264) |
-|
[SubodhDahal](https://github.com/SubodhDahal) |
[TobiasDev](https://github.com/TobiasDev) |
[Whaell](https://github.com/Whaell) |
[jyuvaraj03](https://github.com/jyuvaraj03) |
[kowalskidev](https://github.com/kowalskidev) |
-|
[alexchee](https://github.com/alexchee) |
[axq](https://github.com/axq) |
[barbowza](https://github.com/barbowza) |
[eresytter](https://github.com/eresytter) |
[lightray22](https://github.com/lightray22) |
-|
[lscolombo](https://github.com/lscolombo) |
[mrkaato](https://github.com/mrkaato) |
[pf-siedler](https://github.com/pf-siedler) |
[ruuti](https://github.com/ruuti) |
[s1nceri7y](https://github.com/s1nceri7y) |
-|
[kornava](https://github.com/kornava) |
[ShuiHuo](https://github.com/ShuiHuo) |
[ikunya](https://github.com/ikunya) |
[Ahmad45123](https://github.com/Ahmad45123) |
[bedwardly-down](https://github.com/bedwardly-down) |
-|
[dcaveiro](https://github.com/dcaveiro) |
[hexclover](https://github.com/hexclover) |
[2jaeyeol](https://github.com/2jaeyeol) |
[thackeraaron](https://github.com/thackeraaron) |
[aaronxn](https://github.com/aaronxn) |
-|
[xUser5000](https://github.com/xUser5000) |
[iamabhi222](https://github.com/iamabhi222) |
[Aksh-Konda](https://github.com/Aksh-Konda) |
[alanfortlink](https://github.com/alanfortlink) |
[AverageUser2](https://github.com/AverageUser2) |
-|
[afischer211](https://github.com/afischer211) |
[a13xk](https://github.com/a13xk) |
[apankratov](https://github.com/apankratov) |
[teterkin](https://github.com/teterkin) |
[avanderberg](https://github.com/avanderberg) |
-|
[serenitatis](https://github.com/serenitatis) |
[lex111](https://github.com/lex111) |
[Alkindi42](https://github.com/Alkindi42) |
[Jumanjii](https://github.com/Jumanjii) |
[AlphaJack](https://github.com/AlphaJack) |
-|
[Lord-Aman](https://github.com/Lord-Aman) |
[richtwin567](https://github.com/richtwin567) |
[ajilderda](https://github.com/ajilderda) |
[adrynov](https://github.com/adrynov) |
[andrewperry](https://github.com/andrewperry) |
-|
[tekdel](https://github.com/tekdel) |
[anshuman9999](https://github.com/anshuman9999) |
[rasklaad](https://github.com/rasklaad) |
[Technik-J](https://github.com/Technik-J) |
[Shaxine](https://github.com/Shaxine) |
-|
[antonio-ramadas](https://github.com/antonio-ramadas) |
[heyapoorva](https://github.com/heyapoorva) |
[assimd](https://github.com/assimd) |
[Atrate](https://github.com/Atrate) |
[Beowulf2](https://github.com/Beowulf2) |
-|
[bimlas](https://github.com/bimlas) |
[brenobaptista](https://github.com/brenobaptista) |
[brttbndr](https://github.com/brttbndr) |
[carlbordum](https://github.com/carlbordum) |
[carlosedp](https://github.com/carlosedp) |
-|
[chaifeng](https://github.com/chaifeng) |
[charles-e](https://github.com/charles-e) |
[cyy5358](https://github.com/cyy5358) |
[Chillu1](https://github.com/Chillu1) |
[Techwolf12](https://github.com/Techwolf12) |
-|
[cloudtrends](https://github.com/cloudtrends) |
[idcristi](https://github.com/idcristi) |
[damienmascre](https://github.com/damienmascre) |
[daniellandau](https://github.com/daniellandau) |
[danil-tolkachev](https://github.com/danil-tolkachev) |
-|
[darshani28](https://github.com/darshani28) |
[daukadolt](https://github.com/daukadolt) |
[NeverMendel](https://github.com/NeverMendel) |
[dervist](https://github.com/dervist) |
[diego-betto](https://github.com/diego-betto) |
-|
[erdody](https://github.com/erdody) |
[domgoodwin](https://github.com/domgoodwin) |
[b4mboo](https://github.com/b4mboo) |
[donbowman](https://github.com/donbowman) |
[sirnacnud](https://github.com/sirnacnud) |
-|
[dflock](https://github.com/dflock) |
[drobilica](https://github.com/drobilica) |
[educbraga](https://github.com/educbraga) |
[eduardokimmel](https://github.com/eduardokimmel) |
[VodeniZeko](https://github.com/VodeniZeko) |
-|
[ei-ke](https://github.com/ei-ke) |
[einverne](https://github.com/einverne) |
[eodeluga](https://github.com/eodeluga) |
[fathyar](https://github.com/fathyar) |
[fer22f](https://github.com/fer22f) |
-|
[fpindado](https://github.com/fpindado) |
[FleischKarussel](https://github.com/FleischKarussel) |
[talkdirty](https://github.com/talkdirty) |
[gmaubach](https://github.com/gmaubach) |
[gmag11](https://github.com/gmag11) |
-|
[Jackymancs4](https://github.com/Jackymancs4) |
[Glandos](https://github.com/Glandos) |
[vibraniumdev](https://github.com/vibraniumdev) |
[gusbemacbe](https://github.com/gusbemacbe) |
[HOLLYwyh](https://github.com/HOLLYwyh) |
-|
[Fvbor](https://github.com/Fvbor) |
[bennetthanna](https://github.com/bennetthanna) |
[harshitkathuria](https://github.com/harshitkathuria) |
[Vistaus](https://github.com/Vistaus) |
[ianjs](https://github.com/ianjs) |
-|
[iahmedbacha](https://github.com/iahmedbacha) |
[IrvinDominin](https://github.com/IrvinDominin) |
[ishammahajan](https://github.com/ishammahajan) |
[ffadilaputra](https://github.com/ffadilaputra) |
[JRaiden16](https://github.com/JRaiden16) |
-|
[jacobherrington](https://github.com/jacobherrington) |
[jamesadjinwa](https://github.com/jamesadjinwa) |
[jrwrigh](https://github.com/jrwrigh) |
[jaredcrowe](https://github.com/jaredcrowe) |
[volatilevar](https://github.com/volatilevar) |
-|
[innkuika](https://github.com/innkuika) |
[JoelRSimpson](https://github.com/JoelRSimpson) |
[joeltaylor](https://github.com/joeltaylor) |
[exic](https://github.com/exic) |
[JonathanPlasse](https://github.com/JonathanPlasse) |
-|
[joesfer](https://github.com/joesfer) |
[joybinchen](https://github.com/joybinchen) |
[kaustubhsh](https://github.com/kaustubhsh) |
[y-usuzumi](https://github.com/y-usuzumi) |
[xuhcc](https://github.com/xuhcc) |
-|
[kirtanprht](https://github.com/kirtanprht) |
[k0ur0x](https://github.com/k0ur0x) |
[kklas](https://github.com/kklas) |
[xmlangel](https://github.com/xmlangel) |
[troilus](https://github.com/troilus) |
-|
[lboullo0](https://github.com/lboullo0) |
[dbinary](https://github.com/dbinary) |
[marc-bouvier](https://github.com/marc-bouvier) |
[mvonmaltitz](https://github.com/mvonmaltitz) |
[mlkood](https://github.com/mlkood) |
-|
[plextoriano](https://github.com/plextoriano) |
[Marmo](https://github.com/Marmo) |
[mcejp](https://github.com/mcejp) |
[freaktechnik](https://github.com/freaktechnik) |
[martinkorelic](https://github.com/martinkorelic) |
-|
[Petemir](https://github.com/Petemir) |
[matsair](https://github.com/matsair) |
[mgroth0](https://github.com/mgroth0) |
[silentmatt](https://github.com/silentmatt) |
[maxs-test](https://github.com/maxs-test) |
-|
[MichBoi](https://github.com/MichBoi) |
[MichipX](https://github.com/MichipX) |
[MrTraduttore](https://github.com/MrTraduttore) |
[sanjarcode](https://github.com/sanjarcode) |
[Mustafa-ALD](https://github.com/Mustafa-ALD) |
-|
[NJannasch](https://github.com/NJannasch) |
[zomglings](https://github.com/zomglings) |
[Frichetten](https://github.com/Frichetten) |
[nicolas-suzuki](https://github.com/nicolas-suzuki) |
[Ouvill](https://github.com/Ouvill) |
-|
[shorty2380](https://github.com/shorty2380) |
[dist3r](https://github.com/dist3r) |
[rakleed](https://github.com/rakleed) |
[idle-code](https://github.com/idle-code) |
[bobchao](https://github.com/bobchao) |
-|
[Diadlo](https://github.com/Diadlo) |
[pranavmodx](https://github.com/pranavmodx) |
[R3dError](https://github.com/R3dError) |
[rajprakash00](https://github.com/rajprakash00) |
[rahil1304](https://github.com/rahil1304) |
-|
[rasulkireev](https://github.com/rasulkireev) |
[reinhart1010](https://github.com/reinhart1010) |
[Retew](https://github.com/Retew) |
[ambrt](https://github.com/ambrt) |
[Derkades](https://github.com/Derkades) |
-|
[fourstepper](https://github.com/fourstepper) |
[rodgco](https://github.com/rodgco) |
[Ronnie76er](https://github.com/Ronnie76er) |
[roryokane](https://github.com/roryokane) |
[ruzaq](https://github.com/ruzaq) |
-|
[szokesandor](https://github.com/szokesandor) |
[SamuelBlickle](https://github.com/SamuelBlickle) |
[livingc0l0ur](https://github.com/livingc0l0ur) |
[bronson](https://github.com/bronson) |
[semperor](https://github.com/semperor) |
-|
[shawnaxsom](https://github.com/shawnaxsom) |
[SFoskitt](https://github.com/SFoskitt) |
[kcrt](https://github.com/kcrt) |
[xissy](https://github.com/xissy) |
[tams](https://github.com/tams) |
-|
[Tekki](https://github.com/Tekki) |
[ThatcherC](https://github.com/ThatcherC) |
[TheoDutch](https://github.com/TheoDutch) |
[tbroadley](https://github.com/tbroadley) |
[Kriechi](https://github.com/Kriechi) |
-|
[tkilaker](https://github.com/tkilaker) |
[Tim-Erwin](https://github.com/Tim-Erwin) |
[tcyrus](https://github.com/tcyrus) |
[tobias-grasse](https://github.com/tobias-grasse) |
[strobeltobias](https://github.com/strobeltobias) |
-|
[kostegit](https://github.com/kostegit) |
[tbergeron](https://github.com/tbergeron) |
[Ullas-Aithal](https://github.com/Ullas-Aithal) |
[MyTheValentinus](https://github.com/MyTheValentinus) |
[vassudanagunta](https://github.com/vassudanagunta) |
-|
[vijayjoshi16](https://github.com/vijayjoshi16) |
[max-keviv](https://github.com/max-keviv) |
[vandreykiv](https://github.com/vandreykiv) |
[WisdomCode](https://github.com/WisdomCode) |
[xsak](https://github.com/xsak) |
-|
[ymitsos](https://github.com/ymitsos) |
[abolishallprivateproperty](https://github.com/abolishallprivateproperty) |
[aerotog](https://github.com/aerotog) |
[albertopasqualetto](https://github.com/albertopasqualetto) |
[asrient](https://github.com/asrient) |
-|
[bestlibre](https://github.com/bestlibre) |
[boring10](https://github.com/boring10) |
[cadolphs](https://github.com/cadolphs) |
[colorchestra](https://github.com/colorchestra) |
[cybertramp](https://github.com/cybertramp) |
-|
[dartero](https://github.com/dartero) |
[delta-emil](https://github.com/delta-emil) |
[doc75](https://github.com/doc75) |
[dsp77](https://github.com/dsp77) |
[ebayer](https://github.com/ebayer) |
-|
[elsiehupp](https://github.com/elsiehupp) |
[espinosa](https://github.com/espinosa) |
[exponentactivity](https://github.com/exponentactivity) |
[exprez135](https://github.com/exprez135) |
[fab4x](https://github.com/fab4x) |
-|
[fabianski7](https://github.com/fabianski7) |
[rasperepodvipodvert](https://github.com/rasperepodvipodvert) |
[gasolin](https://github.com/gasolin) |
[githubaccount073](https://github.com/githubaccount073) |
[hms5232](https://github.com/hms5232) |
-|
[hydrandt](https://github.com/hydrandt) |
[iamtalwinder](https://github.com/iamtalwinder) |
[jabdoa2](https://github.com/jabdoa2) |
[jduar](https://github.com/jduar) |
[jibedoubleve](https://github.com/jibedoubleve) |
-|
[johanvanheusden](https://github.com/johanvanheusden) |
[jtagcat](https://github.com/jtagcat) |
[konhi](https://github.com/konhi) |
[krzysiekwie](https://github.com/krzysiekwie) |
[lighthousebulb](https://github.com/lighthousebulb) |
-|
[luzpaz](https://github.com/luzpaz) |
[majsterkovic](https://github.com/majsterkovic) |
[mak2002](https://github.com/mak2002) |
[nmiquan](https://github.com/nmiquan) |
[nullpointer666](https://github.com/nullpointer666) |
-|
[oscaretu](https://github.com/oscaretu) |
[oskarsh](https://github.com/oskarsh) |
[osso73](https://github.com/osso73) |
[over-soul](https://github.com/over-soul) |
[pensierocrea](https://github.com/pensierocrea) |
-|
[pomeloy](https://github.com/pomeloy) |
[rhtenhove](https://github.com/rhtenhove) |
[rikanotank1](https://github.com/rikanotank1) |
[rxliuli](https://github.com/rxliuli) |
[simonsan](https://github.com/simonsan) |
-|
[stellarpower](https://github.com/stellarpower) |
[suixinio](https://github.com/suixinio) |
[sumomo-99](https://github.com/sumomo-99) |
[xtatsux](https://github.com/xtatsux) |
[taw00](https://github.com/taw00) |
-|
[tcassaert](https://github.com/tcassaert) |
[victante](https://github.com/victante) |
[Voltinus](https://github.com/Voltinus) |
[xcffl](https://github.com/xcffl) |
[yourcontact](https://github.com/yourcontact) |
-|
[zaoyifan](https://github.com/zaoyifan) |
[zawnk](https://github.com/zawnk) |
[zen-quo](https://github.com/zen-quo) |
[zozolina123](https://github.com/zozolina123) |
[xcession](https://github.com/xcession) |
-|
[paventyang](https://github.com/paventyang) |
[jackytsu](https://github.com/jackytsu) |
[zhangmx](https://github.com/zhangmx) | | |
+|
[laurent22](https://github.com/laurent22) |
[tessus](https://github.com/tessus) |
[CalebJohn](https://github.com/CalebJohn) |
[personalizedrefrigerator](https://github.com/personalizedrefrigerator) |
[roman-r-m](https://github.com/roman-r-m) |
+|
[miciasto](https://github.com/miciasto) |
[ken1kob](https://github.com/ken1kob) |
[genneko](https://github.com/genneko) |
[Daeraxa](https://github.com/Daeraxa) |
[tanrax](https://github.com/tanrax) |
+|
[j-krl](https://github.com/j-krl) |
[wh201906](https://github.com/wh201906) |
[JackGruber](https://github.com/JackGruber) |
[naviji](https://github.com/naviji) |
[PackElend](https://github.com/PackElend) |
+|
[julien-me](https://github.com/julien-me) |
[pedr](https://github.com/pedr) |
[potatogim](https://github.com/potatogim) |
[JonatanWick](https://github.com/JonatanWick) |
[Ardakilic](https://github.com/Ardakilic) |
+|
[milotype](https://github.com/milotype) |
[asrient](https://github.com/asrient) |
[rtmkrlv](https://github.com/rtmkrlv) |
[fmrtn](https://github.com/fmrtn) |
[Mr-Kanister](https://github.com/Mr-Kanister) |
+|
[palerdot](https://github.com/palerdot) |
[matsest](https://github.com/matsest) |
[devonzuegel](https://github.com/devonzuegel) |
[anjulalk](https://github.com/anjulalk) |
[gabcoh](https://github.com/gabcoh) |
+|
[hubertfilho](https://github.com/hubertfilho) |
[abonte](https://github.com/abonte) |
[Abijeet](https://github.com/Abijeet) |
[ishantgupta777](https://github.com/ishantgupta777) |
[ScriptInfra](https://github.com/ScriptInfra) |
+|
[jd1378](https://github.com/jd1378) |
[rabeehrz](https://github.com/rabeehrz) |
[coderrsid](https://github.com/coderrsid) |
[mablin7](https://github.com/mablin7) |
[jackytsu](https://github.com/jackytsu) |
+|
[mak2002](https://github.com/mak2002) |
[XarisA](https://github.com/XarisA) |
[foxmask](https://github.com/foxmask) |
[innocuo](https://github.com/innocuo) |
[Rahulm2310](https://github.com/Rahulm2310) |
+|
[Ahmad45123](https://github.com/Ahmad45123) |
[jonath92](https://github.com/jonath92) |
[readingsnail](https://github.com/readingsnail) |
[xavivars](https://github.com/xavivars) |
[rnbastos](https://github.com/rnbastos) |
+|
[alexdevero](https://github.com/alexdevero) |
[Elaborendum](https://github.com/Elaborendum) |
[Mannivu](https://github.com/Mannivu) |
[nishantwrp](https://github.com/nishantwrp) |
[Runo-saduwa](https://github.com/Runo-saduwa) |
+|
[shinglyu](https://github.com/shinglyu) |
[Tolu-Mals](https://github.com/Tolu-Mals) |
[marcosvega91](https://github.com/marcosvega91) |
[mrkaato0](https://github.com/mrkaato0) |
[petrz12](https://github.com/petrz12) |
+|
[zblesk](https://github.com/zblesk) |
[vsimkus](https://github.com/vsimkus) |
[Vaso3](https://github.com/Vaso3) |
[moltenform](https://github.com/moltenform) |
[marph91](https://github.com/marph91) |
+|
[zuphilip](https://github.com/zuphilip) |
[Retr0ve](https://github.com/Retr0ve) |
[Rishabh-malhotraa](https://github.com/Rishabh-malhotraa) |
[metbril](https://github.com/metbril) |
[SFulpius](https://github.com/SFulpius) |
+|
[TaoK](https://github.com/TaoK) |
[WhiredPlanck](https://github.com/WhiredPlanck) |
[ProgramFan](https://github.com/ProgramFan) |
[yaozeye](https://github.com/yaozeye) |
[ylc395](https://github.com/ylc395) |
+|
[amandamcg](https://github.com/amandamcg) |
[leematos](https://github.com/leematos) |
[RenatoXSR](https://github.com/RenatoXSR) |
[RedDocMD](https://github.com/RedDocMD) |
[t1011](https://github.com/t1011) |
+|
[whalehub](https://github.com/whalehub) |
[amitsin6h](https://github.com/amitsin6h) |
[Atalanttore](https://github.com/Atalanttore) |
[hieuthi](https://github.com/hieuthi) |
[martonpaulo](https://github.com/martonpaulo) |
+|
[mmahmoudian](https://github.com/mmahmoudian) |
[bobchao](https://github.com/bobchao) |
[rc2dev](https://github.com/rc2dev) |
[Rishabhraghwendra18](https://github.com/Rishabhraghwendra18) |
[sinkuu](https://github.com/sinkuu) |
+|
[stweil](https://github.com/stweil) |
[Subhra264](https://github.com/Subhra264) |
[conyx](https://github.com/conyx) |
[anihm136](https://github.com/anihm136) |
[archont00](https://github.com/archont00) |
+|
[bradmcl](https://github.com/bradmcl) |
[jcgurango](https://github.com/jcgurango) |
[mrkaato](https://github.com/mrkaato) |
[tfinnberg](https://github.com/tfinnberg) |
[adarsh-sgh](https://github.com/adarsh-sgh) |
+|
[marcushill](https://github.com/marcushill) |
[nathanleiby](https://github.com/nathanleiby) |
[piotrb](https://github.com/piotrb) |
[RaphaelKimmig](https://github.com/RaphaelKimmig) |
[Wartijn](https://github.com/Wartijn) |
+|
[xUser5000](https://github.com/xUser5000) |
[serenitatis](https://github.com/serenitatis) |
[k33pn3xtlvl](https://github.com/k33pn3xtlvl) |
[antontkv](https://github.com/antontkv) |
[infinity052](https://github.com/infinity052) |
+|
[entrymaster](https://github.com/entrymaster) |
[BartBucknill](https://github.com/BartBucknill) |
[betty-alagwu](https://github.com/betty-alagwu) |
[mrwulf](https://github.com/mrwulf) |
[brttbndr](https://github.com/brttbndr) |
+|
[cas--](https://github.com/cas--) |
[chrisb86](https://github.com/chrisb86) |
[chrmoritz](https://github.com/chrmoritz) |
[djunho](https://github.com/djunho) |
[daniellandau](https://github.com/daniellandau) |
+|
[krote5k](https://github.com/krote5k) |
[ethan42411](https://github.com/ethan42411) |
[JOJ0](https://github.com/JOJ0) |
[jalajcodes](https://github.com/jalajcodes) |
[jblunck](https://github.com/jblunck) |
+|
[jdrobertso](https://github.com/jdrobertso) |
[Jesssullivan](https://github.com/Jesssullivan) |
[jmontane](https://github.com/jmontane) |
[johanhammar](https://github.com/johanhammar) |
[krishna8421](https://github.com/krishna8421) |
+|
[Linkosred](https://github.com/Linkosred) |
[solariz](https://github.com/solariz) |
[maicki](https://github.com/maicki) |
[mjjzf](https://github.com/mjjzf) |
[popovoleksandr](https://github.com/popovoleksandr) |
+|
[Philipp91](https://github.com/Philipp91) |
[rt-oliveira](https://github.com/rt-oliveira) |
[sebastienjust](https://github.com/sebastienjust) |
[sealch](https://github.com/sealch) |
[StarFang208](https://github.com/StarFang208) |
+|
[SubodhDahal](https://github.com/SubodhDahal) |
[TobiasDev](https://github.com/TobiasDev) |
[tmclo](https://github.com/tmclo) |
[Whaell](https://github.com/Whaell) |
[jyuvaraj03](https://github.com/jyuvaraj03) |
+|
[kowalskidev](https://github.com/kowalskidev) |
[alexchee](https://github.com/alexchee) |
[axq](https://github.com/axq) |
[balmag](https://github.com/balmag) |
[barbowza](https://github.com/barbowza) |
+|
[eresytter](https://github.com/eresytter) |
[kik0220](https://github.com/kik0220) |
[stingray-11](https://github.com/stingray-11) |
[lscolombo](https://github.com/lscolombo) |
[majsterkovic](https://github.com/majsterkovic) |
+|
[pf-siedler](https://github.com/pf-siedler) |
[ruuti](https://github.com/ruuti) |
[s1nceri7y](https://github.com/s1nceri7y) |
[kornava](https://github.com/kornava) |
[sensor-freak](https://github.com/sensor-freak) |
+|
[paventyang](https://github.com/paventyang) |
[ShuiHuo](https://github.com/ShuiHuo) |
[ikunya](https://github.com/ikunya) |
[bedwardly-down](https://github.com/bedwardly-down) |
[fstanis](https://github.com/fstanis) |
+|
[sammyhori](https://github.com/sammyhori) |
[hexclover](https://github.com/hexclover) |
[2jaeyeol](https://github.com/2jaeyeol) |
[thackeraaron](https://github.com/thackeraaron) |
[AIbnuHIbban](https://github.com/AIbnuHIbban) |
+|
[asalthobaity](https://github.com/asalthobaity) |
[abhi-bhatra](https://github.com/abhi-bhatra) |
[iamabhi222](https://github.com/iamabhi222) |
[waditos](https://github.com/waditos) |
[sandstone991](https://github.com/sandstone991) |
+|
[Aksh-Konda](https://github.com/Aksh-Konda) |
[alanfortlink](https://github.com/alanfortlink) |
[alecmaly](https://github.com/alecmaly) |
[AverageUser2](https://github.com/AverageUser2) |
[adw2019](https://github.com/adw2019) |
+|
[afischer211](https://github.com/afischer211) |
[bablecopherye](https://github.com/bablecopherye) |
[a13xk](https://github.com/a13xk) |
[apankratov](https://github.com/apankratov) |
[teterkin](https://github.com/teterkin) |
+|
[avanderberg](https://github.com/avanderberg) |
[lex111](https://github.com/lex111) |
[Alkindi42](https://github.com/Alkindi42) |
[Jumanjii](https://github.com/Jumanjii) |
[AlphaJack](https://github.com/AlphaJack) |
+|
[Lord-Aman](https://github.com/Lord-Aman) |
[aminvakil](https://github.com/aminvakil) |
[richtwin567](https://github.com/richtwin567) |
[andrejilderda](https://github.com/andrejilderda) |
[deining](https://github.com/deining) |
+|
[adrynov](https://github.com/adrynov) |
[andrewperry](https://github.com/andrewperry) |
[tekdel](https://github.com/tekdel) |
[fobo66](https://github.com/fobo66) |
[andzs](https://github.com/andzs) |
+|
[pandeymangg](https://github.com/pandeymangg) |
[rasklaad](https://github.com/rasklaad) |
[Shaxine](https://github.com/Shaxine) |
[antonio-ramadas](https://github.com/antonio-ramadas) |
[aprvsh](https://github.com/aprvsh) |
+|
[aynp](https://github.com/aynp) |
[assimd](https://github.com/assimd) |
[Atrate](https://github.com/Atrate) |
[austindoupnik](https://github.com/austindoupnik) |
[BeeverTeeth](https://github.com/BeeverTeeth) |
+|
[be-we](https://github.com/be-we) |
[ei8fdb](https://github.com/ei8fdb) |
[bimlas](https://github.com/bimlas) |
[bishoy-magdy](https://github.com/bishoy-magdy) |
[brad](https://github.com/brad) |
+|
[brenobaptista](https://github.com/brenobaptista) |
[CandleCandle](https://github.com/CandleCandle) |
[carlbordum](https://github.com/carlbordum) |
[carlosngo](https://github.com/carlosngo) |
[carlosedp](https://github.com/carlosedp) |
+|
[chaifeng](https://github.com/chaifeng) |
[charles-e](https://github.com/charles-e) |
[cyy53589](https://github.com/cyy53589) |
[Chillu1](https://github.com/Chillu1) |
[Techwolf12](https://github.com/Techwolf12) |
+|
[christopher-o-toole](https://github.com/christopher-o-toole) |
[cloudtrends](https://github.com/cloudtrends) |
[idcristi](https://github.com/idcristi) |
[damienmascre](https://github.com/damienmascre) |
[da2x](https://github.com/da2x) |
+|
[danielb2](https://github.com/danielb2) |
[danil-tolkachev](https://github.com/danil-tolkachev) |
[darshani28](https://github.com/darshani28) |
[daukadolt](https://github.com/daukadolt) |
[DavidBeale](https://github.com/DavidBeale) |
+|
[NeverMendel](https://github.com/NeverMendel) |
[Mr-DG-Wick](https://github.com/Mr-DG-Wick) |
[DG0lden](https://github.com/DG0lden) |
[deunlee](https://github.com/deunlee) |
[diego-betto](https://github.com/diego-betto) |
+|
[erdody](https://github.com/erdody) |
[diragb](https://github.com/diragb) |
[domgoodwin](https://github.com/domgoodwin) |
[b4mboo](https://github.com/b4mboo) |
[donbowman](https://github.com/donbowman) |
+|
[DeeJayLSP](https://github.com/DeeJayLSP) |
[sirnacnud](https://github.com/sirnacnud) |
[dflock](https://github.com/dflock) |
[drobilica](https://github.com/drobilica) |
[educbraga](https://github.com/educbraga) |
+|
[eduebernal](https://github.com/eduebernal) |
[eduardokimmel](https://github.com/eduardokimmel) |
[ei-ke](https://github.com/ei-ke) |
[einverne](https://github.com/einverne) |
[etho201](https://github.com/etho201) |
+|
[eodeluga](https://github.com/eodeluga) |
[fathyar](https://github.com/fathyar) |
[Fejby](https://github.com/Fejby) |
[fkinoshita](https://github.com/fkinoshita) |
[fer22f](https://github.com/fer22f) |
+|
[fpindado](https://github.com/fpindado) |
[FleischKarussel](https://github.com/FleischKarussel) |
[easyteacher](https://github.com/easyteacher) |
[halkeye](https://github.com/halkeye) |
[gmaubach](https://github.com/gmaubach) |
+|
[gmag11](https://github.com/gmag11) |
[Jackymancs4](https://github.com/Jackymancs4) |
[gitstart](https://github.com/gitstart) |
[Glandos](https://github.com/Glandos) |
[ggteixeira](https://github.com/ggteixeira) |
+|
[gusbemacbe](https://github.com/gusbemacbe) |
[HOLLYwyh](https://github.com/HOLLYwyh) |
[Fvbor](https://github.com/Fvbor) |
[hamishmb](https://github.com/hamishmb) |
[bennetthanna](https://github.com/bennetthanna) |
+|
[graueneko](https://github.com/graueneko) |
[harshitkathuria](https://github.com/harshitkathuria) |
[Vistaus](https://github.com/Vistaus) |
[gtlsgamr](https://github.com/gtlsgamr) |
[horaceyoung](https://github.com/horaceyoung) |
+|
[ianjs](https://github.com/ianjs) |
[iahmedbacha](https://github.com/iahmedbacha) |
[caseycs](https://github.com/caseycs) |
[IrvinDominin](https://github.com/IrvinDominin) |
[ishammahajan](https://github.com/ishammahajan) |
+|
[ffadilaputra](https://github.com/ffadilaputra) |
[Iwantgreencard](https://github.com/Iwantgreencard) |
[j0hn-mc-clane](https://github.com/j0hn-mc-clane) |
[JRaiden16](https://github.com/JRaiden16) |
[jacobherrington](https://github.com/jacobherrington) |
+|
[jamesadjinwa](https://github.com/jamesadjinwa) |
[jrwrigh](https://github.com/jrwrigh) |
[analogist](https://github.com/analogist) |
[jaredcrowe](https://github.com/jaredcrowe) |
[jasonwilliams](https://github.com/jasonwilliams) |
+|
[volatilevar](https://github.com/volatilevar) |
[innkuika](https://github.com/innkuika) |
[JoelRSimpson](https://github.com/JoelRSimpson) |
[joeltaylor](https://github.com/joeltaylor) |
[thejohnfreeman](https://github.com/thejohnfreeman) |
+|
[exic](https://github.com/exic) |
[JonathanPlasse](https://github.com/JonathanPlasse) |
[joschaschmiedt](https://github.com/joschaschmiedt) |
[joesfer](https://github.com/joesfer) |
[joserebelo](https://github.com/joserebelo) |
+|
[joybinchen](https://github.com/joybinchen) |
[Juvecu](https://github.com/Juvecu) |
[KaneGreen](https://github.com/KaneGreen) |
[kaustubhsh](https://github.com/kaustubhsh) |
[y-usuzumi](https://github.com/y-usuzumi) |
+|
[kevinshu1995](https://github.com/kevinshu1995) |
[Kevin-vdberg](https://github.com/Kevin-vdberg) |
[kkoyung](https://github.com/kkoyung) |
[xuhcc](https://github.com/xuhcc) |
[kirtanprht](https://github.com/kirtanprht) |
+|
[k0ur0x](https://github.com/k0ur0x) |
[kklas](https://github.com/kklas) |
[xmlangel](https://github.com/xmlangel) |
[Letty](https://github.com/Letty) |
[troilus](https://github.com/troilus) |
+|
[LightAPIs](https://github.com/LightAPIs) |
[Longhao-Chen](https://github.com/Longhao-Chen) |
[diogocaveiro](https://github.com/diogocaveiro) |
[lboullo0](https://github.com/lboullo0) |
[luisperezmarin](https://github.com/luisperezmarin) |
+|
[MHolkamp](https://github.com/MHolkamp) |
[marc-bouvier](https://github.com/marc-bouvier) |
[mvonmaltitz](https://github.com/mvonmaltitz) |
[mlkood](https://github.com/mlkood) |
[plextoriano](https://github.com/plextoriano) |
+|
[Marmo](https://github.com/Marmo) |
[mcejp](https://github.com/mcejp) |
[freaktechnik](https://github.com/freaktechnik) |
[martinkorelic](https://github.com/martinkorelic) |
[Petemir](https://github.com/Petemir) |
+|
[matsair](https://github.com/matsair) |
[MattDemers](https://github.com/MattDemers) |
[mgroth0](https://github.com/mgroth0) |
[silentmatt](https://github.com/silentmatt) |
[maxs-test](https://github.com/maxs-test) |
+|
[MichBoi](https://github.com/MichBoi) |
[MikkCZ](https://github.com/MikkCZ) |
[MichipX](https://github.com/MichipX) |
[Elleo](https://github.com/Elleo) |
[phucbm](https://github.com/phucbm) |
+|
[miucci](https://github.com/miucci) |
[MovingEarth](https://github.com/MovingEarth) |
[MrTraduttore](https://github.com/MrTraduttore) |
[sanjarcode](https://github.com/sanjarcode) |
[Mustafa-ALD](https://github.com/Mustafa-ALD) |
+|
[LeMyst](https://github.com/LeMyst) |
[matmolni](https://github.com/matmolni) |
[NJannasch](https://github.com/NJannasch) |
[kna](https://github.com/kna) |
[zomglings](https://github.com/zomglings) |
+|
[nicholas-10](https://github.com/nicholas-10) |
[nickhobbs94](https://github.com/nickhobbs94) |
[Frichetten](https://github.com/Frichetten) |
[nicolas-suzuki](https://github.com/nicolas-suzuki) |
[Nicryc](https://github.com/Nicryc) |
+|
[nik-gautam](https://github.com/nik-gautam) |
[noah-nash](https://github.com/noah-nash) |
[OmGole](https://github.com/OmGole) |
[Ouvill](https://github.com/Ouvill) |
[shorty2380](https://github.com/shorty2380) |
+|
[dist3r](https://github.com/dist3r) |
[rakleed](https://github.com/rakleed) |
[idle-code](https://github.com/idle-code) |
[Oaklight](https://github.com/Oaklight) |
[Perkolator](https://github.com/Perkolator) |
+|
[petzi53](https://github.com/petzi53) |
[phitsc](https://github.com/phitsc) |
[KowalskiPiotr98](https://github.com/KowalskiPiotr98) |
[Polaris66](https://github.com/Polaris66) |
[Diadlo](https://github.com/Diadlo) |
+|
[pranavmodx](https://github.com/pranavmodx) |
[R3dError](https://github.com/R3dError) |
[rajprakash00](https://github.com/rajprakash00) |
[rahil1304](https://github.com/rahil1304) |
[rasulkireev](https://github.com/rasulkireev) |
+|
[reinhart1010](https://github.com/reinhart1010) |
[Retew](https://github.com/Retew) |
[ambrt](https://github.com/ambrt) |
[rio-codes](https://github.com/rio-codes) |
[robmoffat](https://github.com/robmoffat) |
+|
[Derkades](https://github.com/Derkades) |
[fourstepper](https://github.com/fourstepper) |
[rodgco](https://github.com/rodgco) |
[Ronnie76er](https://github.com/Ronnie76er) |
[roryokane](https://github.com/roryokane) |
+|
[ruzaq](https://github.com/ruzaq) |
[szokesandor](https://github.com/szokesandor) |
[forsh4w](https://github.com/forsh4w) |
[SamuelBlickle](https://github.com/SamuelBlickle) |
[livingc0l0ur](https://github.com/livingc0l0ur) |
+|
[bronson](https://github.com/bronson) |
[sebthom](https://github.com/sebthom) |
[semperor](https://github.com/semperor) |
[SeptemberHX](https://github.com/SeptemberHX) |
[shawnaxsom](https://github.com/shawnaxsom) |
+|
[hurutoriya](https://github.com/hurutoriya) |
[siddharthmagadum16](https://github.com/siddharthmagadum16) |
[5idereal](https://github.com/5idereal) |
[stephan-dev](https://github.com/stephan-dev) |
[SFoskitt](https://github.com/SFoskitt) |
+|
[stephanoskomnenos](https://github.com/stephanoskomnenos) |
[WebSnke](https://github.com/WebSnke) |
[kcrt](https://github.com/kcrt) |
[xissy](https://github.com/xissy) |
[tams](https://github.com/tams) |
+|
[Tekki](https://github.com/Tekki) |
[Teko-uy](https://github.com/Teko-uy) |
[ThatcherC](https://github.com/ThatcherC) |
[TheoDutch](https://github.com/TheoDutch) |
[Theta-Dev](https://github.com/Theta-Dev) |
+|
[ThibaultJanBeyer](https://github.com/ThibaultJanBeyer) |
[tbroadley](https://github.com/tbroadley) |
[Kriechi](https://github.com/Kriechi) |
[tkilaker](https://github.com/tkilaker) |
[Archelyst](https://github.com/Archelyst) |
+|
[tcyrus](https://github.com/tcyrus) |
[tobias-grasse](https://github.com/tobias-grasse) |
[strobeltobias](https://github.com/strobeltobias) |
[kostegit](https://github.com/kostegit) |
[TomBursch](https://github.com/TomBursch) |
+|
[tbergeron](https://github.com/tbergeron) |
[tbjers](https://github.com/tbjers) |
[trentlarson](https://github.com/trentlarson) |
[Ullas-Aithal](https://github.com/Ullas-Aithal) |
[vdeville](https://github.com/vdeville) |
+|
[vassudanagunta](https://github.com/vassudanagunta) |
[vijayjoshi16](https://github.com/vijayjoshi16) |
[vjocw](https://github.com/vjocw) |
[max-keviv](https://github.com/max-keviv) |
[vandreykiv](https://github.com/vandreykiv) |
+|
[warddr](https://github.com/warddr) |
[westfalenyeti](https://github.com/westfalenyeti) |
[WisdomCode](https://github.com/WisdomCode) |
[X3NOOO](https://github.com/X3NOOO) |
[xsak](https://github.com/xsak) |
+| | | | | |
diff --git a/packages/tools/update-readme-contributors.js b/packages/tools/update-readme-contributors.ts
similarity index 81%
rename from packages/tools/update-readme-contributors.js
rename to packages/tools/update-readme-contributors.ts
index 17801e9bc5..dfd1a331f4 100644
--- a/packages/tools/update-readme-contributors.js
+++ b/packages/tools/update-readme-contributors.ts
@@ -1,17 +1,21 @@
-'use strict';
-
const request = require('request');
+interface Contributor {
+ avatar_url: string;
+ login: string;
+ html_url: string;
+}
+
const readmePath = `${__dirname}/../../README.md`;
const { insertContentIntoFile } = require('./tool-utils.js');
-async function gitHubContributors(page) {
+async function gitHubContributors(page: number): Promise {
return new Promise((resolve, reject) => {
request.get({
url: `https://api.github.com/repos/laurent22/joplin/contributors${page ? `?page=${page}` : ''}`,
json: true,
headers: { 'User-Agent': 'Joplin Readme Updater' },
- }, (error, response, data) => {
+ }, (error: any, response: any, data: any) => {
if (error) {
reject(error);
} else if (response.statusCode !== 200) {
@@ -23,10 +27,10 @@ async function gitHubContributors(page) {
});
}
-function contributorTable(contributors) {
+function contributorTable(contributors: Contributor[]) {
const rows = [];
- let row = [];
+ let row: string[] = [];
rows.push(row);
const rowLength = 5;
let contributorIndex = 0;
@@ -65,7 +69,7 @@ function contributorTable(contributors) {
}
async function main() {
- let contributors = [];
+ let contributors: Contributor[] = [];
let pageIndex = 0;
const doneNames = [];
while (true) {
@@ -84,6 +88,10 @@ async function main() {
contributors = contributors.concat(temp);
}
+ contributors = contributors.filter(c => {
+ return !['joplinbot', 'renovate[bot]', 'github-actions[bot]'].includes(c.login);
+ });
+
const tableHtml = contributorTable(contributors);
await insertContentIntoFile(
@@ -94,7 +102,7 @@ async function main() {
);
}
-main(process.argv).catch((error) => {
+main().catch((error) => {
console.error('Fatal error', error);
process.exit(1);
});