mirror of
https://github.com/go-task/task.git
synced 2025-04-13 11:50:50 +02:00
1 line
85 KiB
JavaScript
1 line
85 KiB
JavaScript
"use strict";(self.webpackChunktaskfile_dev=self.webpackChunktaskfile_dev||[]).push([[34],{3905:function(t,e,a){a.d(e,{Zo:function(){return h},kt:function(){return d}});var i=a(7294);function s(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function n(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,i)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?n(Object(a),!0).forEach((function(e){s(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function r(t,e){if(null==t)return{};var a,i,s=function(t,e){if(null==t)return{};var a,i,s={},n=Object.keys(t);for(i=0;i<n.length;i++)a=n[i],e.indexOf(a)>=0||(s[a]=t[a]);return s}(t,e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);for(i=0;i<n.length;i++)a=n[i],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(s[a]=t[a])}return s}var o=i.createContext({}),k=function(t){var e=i.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},h=function(t){var e=k(t.components);return i.createElement(o.Provider,{value:e},t.children)},m="mdxType",p={inlineCode:"code",wrapper:function(t){var e=t.children;return i.createElement(i.Fragment,{},e)}},u=i.forwardRef((function(t,e){var a=t.components,s=t.mdxType,n=t.originalType,o=t.parentName,h=r(t,["components","mdxType","originalType","parentName"]),m=k(a),u=s,d=m["".concat(o,".").concat(u)]||m[u]||p[u]||n;return a?i.createElement(d,l(l({ref:e},h),{},{components:a})):i.createElement(d,l({ref:e},h))}));function d(t,e){var a=arguments,s=e&&e.mdxType;if("string"==typeof t||s){var n=a.length,l=new Array(n);l[0]=u;var r={};for(var o in e)hasOwnProperty.call(e,o)&&(r[o]=e[o]);r.originalType=t,r[m]="string"==typeof t?t:s,l[1]=r;for(var k=2;k<n;k++)l[k]=a[k];return i.createElement.apply(null,l)}return i.createElement.apply(null,a)}u.displayName="MDXCreateElement"},1016:function(t,e,a){a.r(e),a.d(e,{assets:function(){return o},contentTitle:function(){return l},default:function(){return m},frontMatter:function(){return n},metadata:function(){return r},toc:function(){return k}});var i=a(3117),s=(a(7294),a(3905));const n={slug:"/changelog/",sidebar_position:8},l="Changelog",r={unversionedId:"changelog",id:"changelog",title:"Changelog",description:"v3.24.0 - 2023-04-15",source:"@site/docs/changelog.md",sourceDirName:".",slug:"/changelog/",permalink:"/changelog/",draft:!1,tags:[],version:"current",sidebarPosition:8,frontMatter:{slug:"/changelog/",sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Styleguide",permalink:"/styleguide/"},next:{title:"Community",permalink:"/community/"}},o={},k=[{value:"v3.24.0 - 2023-04-15",id:"v3240---2023-04-15",level:2},{value:"v3.23.0 - 2023-03-26",id:"v3230---2023-03-26",level:2},{value:"v3.22.0 - 2023-03-10",id:"v3220---2023-03-10",level:2},{value:"v3.21.0 - 2023-02-22",id:"v3210---2023-02-22",level:2},{value:"v3.20.0 - 2023-01-14",id:"v3200---2023-01-14",level:2},{value:"v3.19.1 - 2022-12-31",id:"v3191---2022-12-31",level:2},{value:"v3.19.0 - 2022-12-05",id:"v3190---2022-12-05",level:2},{value:"v3.18.0 - 2022-11-12",id:"v3180---2022-11-12",level:2},{value:"v3.17.0 - 2022-10-14",id:"v3170---2022-10-14",level:2},{value:"v3.16.0 - 2022-09-29",id:"v3160---2022-09-29",level:2},{value:"v3.15.2 - 2022-09-08",id:"v3152---2022-09-08",level:2},{value:"v3.15.0 - 2022-09-03",id:"v3150---2022-09-03",level:2},{value:"v3.14.1 - 2022-08-03",id:"v3141---2022-08-03",level:2},{value:"v3.14.0 - 2022-07-08",id:"v3140---2022-07-08",level:2},{value:"v3.13.0 - 2022-06-13",id:"v3130---2022-06-13",level:2},{value:"v3.12.1 - 2022-05-10",id:"v3121---2022-05-10",level:2},{value:"v3.12.0 - 2022-03-31",id:"v3120---2022-03-31",level:2},{value:"v3.11.0 - 2022-02-19",id:"v3110---2022-02-19",level:2},{value:"v3.10.0 - 2022-01-04",id:"v3100---2022-01-04",level:2},{value:"v3.9.2 - 2021-12-02",id:"v392---2021-12-02",level:2},{value:"v3.9.1 - 2021-11-28",id:"v391---2021-11-28",level:2},{value:"v3.9.0 - 2021-10-02",id:"v390---2021-10-02",level:2},{value:"v3.8.0 - 2021-09-26",id:"v380---2021-09-26",level:2},{value:"v3.7.3 - 2021-09-04",id:"v373---2021-09-04",level:2},{value:"v3.7.0 - 2021-07-31",id:"v370---2021-07-31",level:2},{value:"v3.6.0 - 2021-07-10",id:"v360---2021-07-10",level:2},{value:"v3.5.0 - 2021-07-04",id:"v350---2021-07-04",level:2},{value:"v3.4.3 - 2021-05-30",id:"v343---2021-05-30",level:2},{value:"v3.4.2 - 2021-04-23",id:"v342---2021-04-23",level:2},{value:"v3.4.1 - 2021-04-17",id:"v341---2021-04-17",level:2},{value:"v3.3.0 - 2021-03-20",id:"v330---2021-03-20",level:2},{value:"v3.2.2 - 2021-01-12",id:"v322---2021-01-12",level:2},{value:"v3.2.1 - 2021-01-09",id:"v321---2021-01-09",level:2},{value:"v3.2.0 - 2021-01-07",id:"v320---2021-01-07",level:2},{value:"v3.1.0 - 2021-01-03",id:"v310---2021-01-03",level:2},{value:"v3.0.1 - 2020-12-26",id:"v301---2020-12-26",level:2},{value:"v3.0.0 - 2020-08-16",id:"v300---2020-08-16",level:2},{value:"v2.8.1 - 2020-05-20",id:"v281---2020-05-20",level:2},{value:"v2.8.0 - 2019-12-07",id:"v280---2019-12-07",level:2},{value:"v2.7.1 - 2019-11-10",id:"v271---2019-11-10",level:2},{value:"v2.7.0 - 2019-09-22",id:"v270---2019-09-22",level:2},{value:"v2.6.0 - 2019-07-21",id:"v260---2019-07-21",level:2},{value:"v2.5.2 - 2019-05-11",id:"v252---2019-05-11",level:2},{value:"2.5.1 - 2019-04-27",id:"251---2019-04-27",level:2},{value:"v2.5.0 - 2019-03-16",id:"v250---2019-03-16",level:2},{value:"v2.4.0 - 2019-02-21",id:"v240---2019-02-21",level:2},{value:"v2.3.0 - 2019-01-02",id:"v230---2019-01-02",level:2},{value:"v2.2.1 - 2018-12-09",id:"v221---2018-12-09",level:2},{value:"v2.2.0 - 2018-10-25",id:"v220---2018-10-25",level:2},{value:"v2.1.1 - 2018-09-17",id:"v211---2018-09-17",level:2},{value:"v2.1.0 - 2018-08-19",id:"v210---2018-08-19",level:2},{value:"v2.0.3 - 2018-06-24",id:"v203---2018-06-24",level:2},{value:"v2.0.2 - 2018-05-01",id:"v202---2018-05-01",level:2},{value:"v2.0.1 - 2018-03-11",id:"v201---2018-03-11",level:2},{value:"v2.0.0 - 2018-03-08",id:"v200---2018-03-08",level:2},{value:"v1.4.4 - 2017-11-19",id:"v144---2017-11-19",level:2},{value:"v1.4.3 - 2017-09-07",id:"v143---2017-09-07",level:2},{value:"v1.4.2 - 2017-07-30",id:"v142---2017-07-30",level:2},{value:"v1.4.1 - 2017-07-15",id:"v141---2017-07-15",level:2},{value:"v1.4.0 - 2017-07-06",id:"v140---2017-07-06",level:2},{value:"v1.3.1 - 2017-06-14",id:"v131---2017-06-14",level:2},{value:"v1.3.0 - 2017-04-24",id:"v130---2017-04-24",level:2},{value:"v1.2.0 - 2017-04-02",id:"v120---2017-04-02",level:2},{value:"v1.1.0 - 2017-03-08",id:"v110---2017-03-08",level:2},{value:"v1.0.0 - 2017-02-28",id:"v100---2017-02-28",level:2}],h={toc:k};function m(t){let{components:e,...a}=t;return(0,s.kt)("wrapper",(0,i.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"changelog"},"Changelog"),(0,s.kt)("h2",{id:"v3240---2023-04-15"},"v3.24.0 - 2023-04-15"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix Fish shell completion for tasks with aliases (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1113"},"#1113")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/patricksjackson"},"@patricksjackson"),")."),(0,s.kt)("li",{parentName:"ul"},"The default branch was renamed from ",(0,s.kt)("inlineCode",{parentName:"li"},"master")," to ",(0,s.kt)("inlineCode",{parentName:"li"},"main")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1049"},"#1049"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1048"},"#1048")," by\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},'Fix bug where "up-to-date" logs were not being omitted for silent tasks (',(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/546"},"#546"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1107"},"#1107")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/danquah"},"@danquah"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},".hg")," (Mercurial) to the list of ignored directories when using ",(0,s.kt)("inlineCode",{parentName:"li"},"--watch"),"\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1098"},"#1098")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/misery"},"@misery"),")."),(0,s.kt)("li",{parentName:"ul"},"More improvements to the release tool (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1096"},"#1096")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Enforce ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/gofumpt"},"gofumpt")," linter (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1099"},"#1099")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")"),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"--sort")," flag for use with ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/946"},"#946"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1105"},"#1105")," by\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Task now has ",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/api/#exit-codes"},"custom exit codes"),"\ndepending on the error (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1114"},"#1114")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),").")),(0,s.kt)("h2",{id:"v3230---2023-03-26"},"v3.23.0 - 2023-03-26"),(0,s.kt)("p",null,"Task now has an\n",(0,s.kt)("a",{parentName:"p",href:"https://marketplace.visualstudio.com/items?itemName=task.vscode-task"},"official extension for Visual Studio Code"),"\ncontributed by ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/pd93"},"@pd93"),"! \ud83c\udf89 The extension is maintained in a\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/go-task/vscode-task"},"new repository")," under the ",(0,s.kt)("inlineCode",{parentName:"p"},"go-task"),"\norganization. We're looking to gather feedback from the community so please give\nit a go and let us know what you think via a\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/go-task/vscode-task/discussions"},"discussion"),",\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/go-task/vscode-task/issues"},"issue")," or on our\n",(0,s.kt)("a",{parentName:"p",href:"https://discord.gg/6TY36E39UK"},"Discord"),"!"),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},(0,s.kt)("strong",{parentName:"p"},"NOTE:")," The extension ",(0,s.kt)("em",{parentName:"p"},"requires")," v3.23.0 to be installed in order to work.")),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"The website was integrated with\n",(0,s.kt)("a",{parentName:"li",href:"https://crowdin.com/project/taskfile"},"Crowdin")," to allow the community to\ncontribute with translations! ",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/zh-Hans/"},"Chinese")," is the\nfirst language available (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1057"},"#1057"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1058"},"#1058")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/misitebao"},"@misitebao"),")."),(0,s.kt)("li",{parentName:"ul"},"Added task location data to the ",(0,s.kt)("inlineCode",{parentName:"li"},"--json")," flag output (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1056"},"#1056")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")"),(0,s.kt)("li",{parentName:"ul"},"Change the name of the file generated by ",(0,s.kt)("inlineCode",{parentName:"li"},"task --init")," from ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.yaml")," to\n",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.yml")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1062"},"#1062")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/misitebao"},"@misitebao"),")."),(0,s.kt)("li",{parentName:"ul"},"Added new ",(0,s.kt)("inlineCode",{parentName:"li"},"splitArgs")," template function\n(",(0,s.kt)("inlineCode",{parentName:"li"},"{{splitArgs \"foo bar 'foo bar baz'\"}}"),") to ensure string is split as\narguments (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1040"},"#1040"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1059"},"#1059")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/dhanusaputra"},"@dhanusaputra"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix the value of ",(0,s.kt)("inlineCode",{parentName:"li"},"{{.CHECKSUM}}")," variable in status (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1076"},"#1076"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1080"},"#1080")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed deep copy implementation (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1072"},"#1072")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")"),(0,s.kt)("li",{parentName:"ul"},"Created a tool to assist with releases (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1086"},"#1086")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),").")),(0,s.kt)("h2",{id:"v3220---2023-03-10"},"v3.22.0 - 2023-03-10"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add a brand new ",(0,s.kt)("inlineCode",{parentName:"li"},"--global")," (",(0,s.kt)("inlineCode",{parentName:"li"},"-g"),") flag that will run a Taskfile from your\n",(0,s.kt)("inlineCode",{parentName:"li"},"$HOME")," directory. This is useful to have automation that you can run from\nanywhere in your system!\n(",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/usage/#running-a-global-taskfile"},"Documentation"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1029"},"#1029"),"\nby ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/andreynering"},"@andreynering"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ability to set ",(0,s.kt)("inlineCode",{parentName:"li"},"error_only: true")," on the ",(0,s.kt)("inlineCode",{parentName:"li"},"group")," output mode. This will\ninstruct Task to only print a command output if it returned with a non-zero\nexit code (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/664"},"#664"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1022"},"#1022")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/jaedle"},"@jaedle"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed bug where ",(0,s.kt)("inlineCode",{parentName:"li"},".task/checksum")," file was sometimes not being created when\ntask also declares a ",(0,s.kt)("inlineCode",{parentName:"li"},"status:")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/840"},"#840"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1035"},"#1035")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/harelwa"},"@harelwa"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1037"},"#1037")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Refactored and decoupled fingerprinting from the main Task executor (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1039"},"#1039")," by\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed deadlock issue when using ",(0,s.kt)("inlineCode",{parentName:"li"},"run: once")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/715"},"#715"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1025"},"#1025")," by\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/theunrepentantgeek"},"@theunrepentantgeek"),").")),(0,s.kt)("h2",{id:"v3210---2023-02-22"},"v3.21.0 - 2023-02-22"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Added new ",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_VERSION")," special variable (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/990"},"#990"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1014"},"#1014")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/ja1code"},"@ja1code"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed a bug where tasks were sometimes incorrectly marked as internal (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1007"},"#1007"),"\nby ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Update to Go 1.20 (bump minimum version to 1.19) (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1010"},"#1010")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")"),(0,s.kt)("li",{parentName:"ul"},"Added environment variable ",(0,s.kt)("inlineCode",{parentName:"li"},"FORCE_COLOR")," support to force color output.\nUsefull for environments without TTY (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1003"},"#1003")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/automation"},"@automation"),"-stack)")),(0,s.kt)("h2",{id:"v3200---2023-01-14"},"v3.20.0 - 2023-01-14"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Improve behavior and performance of status checking when using the ",(0,s.kt)("inlineCode",{parentName:"li"},"timestamp"),"\nmode (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/976"},"#976"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/977"},"#977")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/aminya"},"@aminya"),")."),(0,s.kt)("li",{parentName:"ul"},"Performance optimizations were made for large Taskfiles (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/982"},"#982")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ability to configure options for the\n",(0,s.kt)("a",{parentName:"li",href:"https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html"},(0,s.kt)("inlineCode",{parentName:"a"},"set")),"\nand\n",(0,s.kt)("a",{parentName:"li",href:"https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html"},(0,s.kt)("inlineCode",{parentName:"a"},"shopt")),"\nbuiltins (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/908"},"#908"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/929"},"#929")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),",\n",(0,s.kt)("a",{parentName:"li",href:"http://taskfile.dev/usage/#set-and-shopt"},"Documentation"),")."),(0,s.kt)("li",{parentName:"ul"},"Add new ",(0,s.kt)("inlineCode",{parentName:"li"},"platforms:")," attribute to ",(0,s.kt)("inlineCode",{parentName:"li"},"task")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"cmd"),", so it's now possible to\nchoose in which platforms that given task or command will be run on. Possible\nvalues are operating system (GOOS), architecture (GOARCH) or a combination of\nthe two. Example: ",(0,s.kt)("inlineCode",{parentName:"li"},"platforms: [linux]"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"platforms: [amd64]")," or\n",(0,s.kt)("inlineCode",{parentName:"li"},"platforms: [linux/amd64]"),". Other platforms will be skipped (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/978"},"#978"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/980"},"#980")," by\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/leaanthony"},"@leaanthony"),").")),(0,s.kt)("h2",{id:"v3191---2022-12-31"},"v3.19.1 - 2022-12-31"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Small bug fix: closing ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.yml")," once we're done reading it (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/963"},"#963"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/964"},"#964"),"\nby ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/HeCorr"},"@HeCorr"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixes a bug in v2 that caused a panic when using a ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile_{{OS}}.yml")," file\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/961"},"#961"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/971"},"#971")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed a bug where watch intervals set in the Taskfile were not being respected\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/969"},"#969"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/970"},"#970")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/pd93"},"@pd93"),")"),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"--json")," flag (alias ",(0,s.kt)("inlineCode",{parentName:"li"},"-j"),") with the intent to improve support for code\neditors and add room to other possible integrations. This is basic for now,\nbut we plan to add more info in the near future (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/936"},"#936")," by ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/davidalpert"},"@davidalpert"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/764"},"#764"),").")),(0,s.kt)("h2",{id:"v3190---2022-12-05"},"v3.19.0 - 2022-12-05"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Installation via npm now supports ",(0,s.kt)("a",{parentName:"li",href:"https://pnpm.io/"},"pnpm")," as well\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/go-npm/issues/2"},"go-task/go-npm[#2](https://github.com/go-task/task/issues/2)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/go-npm/pull/3"},"go-task/go-npm[#3](https://github.com/go-task/task/issues/3)"),")."),(0,s.kt)("li",{parentName:"ul"},"It's now possible to run Taskfiles from subdirectories! A new\n",(0,s.kt)("inlineCode",{parentName:"li"},"USER_WORKING_DIR")," special variable was added to add even more flexibility for\nmonorepos (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/289"},"#289"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/920"},"#920"),")."),(0,s.kt)("li",{parentName:"ul"},"Add task-level ",(0,s.kt)("inlineCode",{parentName:"li"},"dotenv")," support (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/389"},"#389"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/904"},"#904"),")."),(0,s.kt)("li",{parentName:"ul"},"It's now possible to use global level variables on ",(0,s.kt)("inlineCode",{parentName:"li"},"includes")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/942"},"#942"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/943"},"#943"),")."),(0,s.kt)("li",{parentName:"ul"},"The website got a brand new\n",(0,s.kt)("a",{parentName:"li",href:"https://task-zh.readthedocs.io/zh_CN/latest/"},"translation to Chinese")," by\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/DeronW"},"[@DeronW](https://github.com/DeronW)"),". Thanks!")),(0,s.kt)("h2",{id:"v3180---2022-11-12"},"v3.18.0 - 2022-11-12"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Show aliases on ",(0,s.kt)("inlineCode",{parentName:"li"},"task --list --silent")," (",(0,s.kt)("inlineCode",{parentName:"li"},"task --ls"),"). This means that aliases\nwill be completed by the completion scripts (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/919"},"#919"),")."),(0,s.kt)("li",{parentName:"ul"},"Tasks in the root Taskfile will now be displayed first in\n",(0,s.kt)("inlineCode",{parentName:"li"},"--list"),"/",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," output (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/806"},"#806"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/890"},"#890"),")."),(0,s.kt)("li",{parentName:"ul"},"It's now possible to call a ",(0,s.kt)("inlineCode",{parentName:"li"},"default")," task in an included Taskfile by using\njust the namespace. For example: ",(0,s.kt)("inlineCode",{parentName:"li"},"docs:default")," is now automatically aliased\nto ",(0,s.kt)("inlineCode",{parentName:"li"},"docs")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/661"},"#661"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/815"},"#815"),").")),(0,s.kt)("h2",{id:"v3170---2022-10-14"},"v3.17.0 - 2022-10-14"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},'Add a "Did you mean ...?" suggestion when a task does not exits another one\nwith a similar name is found (',(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/867"},"#867"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/880"},"#880"),")."),(0,s.kt)("li",{parentName:"ul"},"Now YAML parse errors will print which Taskfile failed to parse (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/885"},"#885"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/887"},"#887"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ability to set ",(0,s.kt)("inlineCode",{parentName:"li"},"aliases")," for tasks and namespaces (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/268"},"#268"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/340"},"#340"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/879"},"#879"),")."),(0,s.kt)("li",{parentName:"ul"},"Improvements to Fish shell completion (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/897"},"#897"),")."),(0,s.kt)("li",{parentName:"ul"},"Added ability to set a different watch interval by setting ",(0,s.kt)("inlineCode",{parentName:"li"},"interval: '500ms'"),"\nor using the ",(0,s.kt)("inlineCode",{parentName:"li"},"--interval=500ms")," flag (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/813"},"#813"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/865"},"#865"),")."),(0,s.kt)("li",{parentName:"ul"},"Add colored output to ",(0,s.kt)("inlineCode",{parentName:"li"},"--list"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"--summary")," flags (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/845"},"#845"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/874"},"#874"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix unexpected behavior where ",(0,s.kt)("inlineCode",{parentName:"li"},"label:")," was being shown instead of the task\nname on ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/603"},"#603"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/877"},"#877"),").")),(0,s.kt)("h2",{id:"v3160---2022-09-29"},"v3.16.0 - 2022-09-29"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"npm")," as new installation method: ",(0,s.kt)("inlineCode",{parentName:"li"},"npm i -g [@go](https://github.com/go)-task/cli")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/870"},"#870"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/871"},"#871"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://www.npmjs.com/package/%5B@go%5D(https://github.com/go)-task/cli"},"npm package"),")."),(0,s.kt)("li",{parentName:"ul"},"Add support to marking tasks and includes as internal, which will hide them\nfrom ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/818"},"#818"),").")),(0,s.kt)("h2",{id:"v3152---2022-09-08"},"v3.15.2 - 2022-09-08"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix error when using variable in ",(0,s.kt)("inlineCode",{parentName:"li"},"env:")," introduced in the previous release\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/858"},"#858"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/866"},"#866"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix handling of ",(0,s.kt)("inlineCode",{parentName:"li"},"CLI_ARGS")," (",(0,s.kt)("inlineCode",{parentName:"li"},"--"),") in Bash completion (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/863"},"#863"),")."),(0,s.kt)("li",{parentName:"ul"},"On zsh completion, add ability to replace ",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," with ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," as\nalready possible on the Bash completion (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/861"},"#861"),").")),(0,s.kt)("h2",{id:"v3150---2022-09-03"},"v3.15.0 - 2022-09-03"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add new special variables ",(0,s.kt)("inlineCode",{parentName:"li"},"ROOT_DIR")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"TASKFILE_DIR"),". This was a highly\nrequested feature (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/215"},"#215"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/857"},"#857"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/api/#special-variables"},"Documentation"),")."),(0,s.kt)("li",{parentName:"ul"},"Follow symlinks on ",(0,s.kt)("inlineCode",{parentName:"li"},"sources")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/826"},"#826"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/831"},"#831"),")."),(0,s.kt)("li",{parentName:"ul"},"Improvements and fixes to Bash completion (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/835"},"#835"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/844"},"#844"),").")),(0,s.kt)("h2",{id:"v3141---2022-08-03"},"v3.14.1 - 2022-08-03"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Always resolve relative include paths relative to the including Taskfile\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/822"},"#822"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/823"},"#823"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix ZSH and PowerShell completions to consider all tasks instead of just the\npublic ones (those with descriptions) (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/803"},"#803"),").")),(0,s.kt)("h2",{id:"v3140---2022-07-08"},"v3.14.0 - 2022-07-08"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add ability to override the ",(0,s.kt)("inlineCode",{parentName:"li"},".task")," directory location with the\n",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_TEMP_DIR")," environment variable."),(0,s.kt)("li",{parentName:"ul"},"Allow to override Task colors using environment variables: ",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_RESET"),",\n",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_BLUE"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_GREEN"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_CYAN"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_YELLOW"),",\n",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_MAGENTA")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"TASK_COLOR_RED")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/568"},"#568"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/792"},"#792"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed bug when using the ",(0,s.kt)("inlineCode",{parentName:"li"},"output: group")," mode where STDOUT and STDERR were\nbeing print in separated blocks instead of in the right order (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/779"},"#779"),")."),(0,s.kt)("li",{parentName:"ul"},"Starting on this release, ARM architecture binaries are been released to Snap\nas well (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/795"},"#795"),")."),(0,s.kt)("li",{parentName:"ul"},"i386 binaries won't be available anymore on Snap because Ubuntu removed the\nsupport for this architecture."),(0,s.kt)("li",{parentName:"ul"},"Upgrade mvdan.cc/sh, which fixes a bug with associative arrays (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/785"},"#785"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/issues/884"},"mvdan/sh[#884](https://github.com/go-task/task/issues/884)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/893"},"mvdan/sh[#893](https://github.com/go-task/task/issues/893)"),").")),(0,s.kt)("h2",{id:"v3130---2022-06-13"},"v3.13.0 - 2022-06-13"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Added ",(0,s.kt)("inlineCode",{parentName:"li"},"-n")," as an alias to ",(0,s.kt)("inlineCode",{parentName:"li"},"--dry")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/776"},"#776"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/777"},"#777"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix behavior of interrupt (SIGINT, SIGTERM) signals. Task will now give time\nfor the processes running to do cleanup work (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/458"},"#458"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/479"},"#479"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/728"},"#728"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/769"},"#769"),")."),(0,s.kt)("li",{parentName:"ul"},"Add new ",(0,s.kt)("inlineCode",{parentName:"li"},"--exit-code")," (",(0,s.kt)("inlineCode",{parentName:"li"},"-x"),") flag that will pass-through the exit form the\ncommand being ran (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/755"},"#755"),").")),(0,s.kt)("h2",{id:"v3121---2022-05-10"},"v3.12.1 - 2022-05-10"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fixed bug where, on Windows, variables were ending with ",(0,s.kt)("inlineCode",{parentName:"li"},"\\r")," because we were\nonly removing the final ",(0,s.kt)("inlineCode",{parentName:"li"},"\\n")," but not ",(0,s.kt)("inlineCode",{parentName:"li"},"\\r\\n")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/717"},"#717"),").")),(0,s.kt)("h2",{id:"v3120---2022-03-31"},"v3.12.0 - 2022-03-31"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"The ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," flags can now be combined with the ",(0,s.kt)("inlineCode",{parentName:"li"},"--silent"),"\nflag to print the task names only, without their description (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/691"},"#691"),")."),(0,s.kt)("li",{parentName:"ul"},"Added support for multi-level inclusion of Taskfiles. This means that included\nTaskfiles can also include other Taskfiles. Before this was limited to one\nlevel (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/390"},"#390"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/623"},"#623"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/656"},"#656"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ability to specify vars when including a Taskfile.\n",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/#/usage?id=vars-of-included-taskfiles"},"Check out the documentation"),"\nfor more information (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/677"},"#677"),").")),(0,s.kt)("h2",{id:"v3110---2022-02-19"},"v3.11.0 - 2022-02-19"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Task now supports printing begin and end messages when using the ",(0,s.kt)("inlineCode",{parentName:"li"},"group"),"\noutput mode, useful for grouping tasks in CI systems.\n",(0,s.kt)("a",{parentName:"li",href:"http://taskfile.dev/#/usage?id=output-syntax"},"Check out the documentation"),"\nfor more information (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/647"},"#647"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/651"},"#651"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.dist.yml")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.dist.yaml")," to the supported file name\nlist.\n",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/#/usage?id=supported-file-names"},"Check out the documentation"),"\nfor more information (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/498"},"#498"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/666"},"#666"),").")),(0,s.kt)("h2",{id:"v3100---2022-01-04"},"v3.10.0 - 2022-01-04"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"A new ",(0,s.kt)("inlineCode",{parentName:"li"},"--list-all")," (alias ",(0,s.kt)("inlineCode",{parentName:"li"},"-a"),") flag is now available. It's similar to the\nexiting ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," (",(0,s.kt)("inlineCode",{parentName:"li"},"-l"),") but prints all tasks, even those without a description\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/383"},"#383"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/401"},"#401"),")."),(0,s.kt)("li",{parentName:"ul"},"It's now possible to schedule cleanup commands to run once a task finishes\nwith the ",(0,s.kt)("inlineCode",{parentName:"li"},"defer:")," keyword\n(",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/#/usage?id=doing-task-cleanup-with-defer"},"Documentation"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/475"},"#475"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/626"},"#626"),")."),(0,s.kt)("li",{parentName:"ul"},"Remove long deprecated and undocumented ",(0,s.kt)("inlineCode",{parentName:"li"},"$")," variable prefix and ",(0,s.kt)("inlineCode",{parentName:"li"},"^")," command\nprefix (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/642"},"#642"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/644"},"#644"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/645"},"#645"),")."),(0,s.kt)("li",{parentName:"ul"},"Add support for ",(0,s.kt)("inlineCode",{parentName:"li"},".yaml")," extension (as an alternative to ",(0,s.kt)("inlineCode",{parentName:"li"},".yml"),"). This was\nrequested multiple times throughout the years. Enjoy! (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/183"},"#183"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/184"},"#184"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/369"},"#369"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/584"},"#584"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/621"},"#621"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed error when computing a variable when the task directory do not exist yet\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/481"},"#481"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/579"},"#579"),").")),(0,s.kt)("h2",{id:"v392---2021-12-02"},"v3.9.2 - 2021-12-02"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Upgrade ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh"},"mvdan/sh")," which contains a fix a for a\nimportant regression on Windows (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/619"},"#619"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/issues/768"},"mvdan/sh[#768](https://github.com/go-task/task/issues/768)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/769"},"mvdan/sh[#769](https://github.com/go-task/task/issues/769)"),").")),(0,s.kt)("h2",{id:"v391---2021-11-28"},"v3.9.1 - 2021-11-28"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add logging in verbose mode for when a task starts and finishes (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/533"},"#533"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/588"},"#588"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix an issue with preconditions and context errors (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/597"},"#597"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/598"},"#598"),")."),(0,s.kt)("li",{parentName:"ul"},"Quote each ",(0,s.kt)("inlineCode",{parentName:"li"},"{{.CLI_ARGS}}")," argument to prevent one with spaces to become many\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/613"},"#613"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix nil pointer when ",(0,s.kt)("inlineCode",{parentName:"li"},"cmd:")," was left empty (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/612"},"#612"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/614"},"#614"),")."),(0,s.kt)("li",{parentName:"ul"},"Upgrade ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh"},"mvdan/sh")," which contains two relevant\nfixes:",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Fix quote of empty strings in ",(0,s.kt)("inlineCode",{parentName:"li"},"shellQuote")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/609"},"#609"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/issues/763"},"mvdan/sh[#763](https://github.com/go-task/task/issues/763)"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix issue of wrong environment variable being picked when there's another\nvery similar one (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/586"},"#586"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/745"},"mvdan/sh[#745](https://github.com/go-task/task/issues/745)"),")."))),(0,s.kt)("li",{parentName:"ul"},"Install shell completions automatically when installing via Homebrew (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/264"},"#264"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/592"},"#592"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/homebrew-tap/pull/2"},"go-task/homebrew-tap[#2](https://github.com/go-task/task/issues/2)"),").")),(0,s.kt)("h2",{id:"v390---2021-10-02"},"v3.9.0 - 2021-10-02"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"A new ",(0,s.kt)("inlineCode",{parentName:"li"},"shellQuote")," function was added to the template system\n(",(0,s.kt)("inlineCode",{parentName:"li"},'{{shellQuote "a string"}}'),") to ensure a string is safe for use in shell\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/727"},"mvdan/sh[#727](https://github.com/go-task/task/issues/727)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/737"},"mvdan/sh[#737](https://github.com/go-task/task/issues/737)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://pkg.go.dev/mvdan.cc/sh/v3%5B@v3%5D(https://github.com/v3).4.0/syntax#Quote"},"Documentation"),")"),(0,s.kt)("li",{parentName:"ul"},"In this version ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh"},"mvdan.cc/sh")," was upgraded with\nsome small fixes and features",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"The ",(0,s.kt)("inlineCode",{parentName:"li"},"read -p")," flag is now supported (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/314"},"#314"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/issues/551"},"mvdan/sh[#551](https://github.com/go-task/task/issues/551)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/722"},"mvdan/sh[#772](https://github.com/go-task/task/issues/772)"),")"),(0,s.kt)("li",{parentName:"ul"},"The ",(0,s.kt)("inlineCode",{parentName:"li"},"pwd -P")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"pwd -L")," flags are now supported (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/553"},"#553"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/issues/724"},"mvdan/sh[#724](https://github.com/go-task/task/issues/724)"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/728"},"mvdan/sh[#728](https://github.com/go-task/task/issues/728)"),")"),(0,s.kt)("li",{parentName:"ul"},"The ",(0,s.kt)("inlineCode",{parentName:"li"},"$GID")," environment variable is now correctly being set (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/561"},"#561"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/mvdan/sh/pull/723"},"mvdan/sh[#723](https://github.com/go-task/task/issues/723)"),")")))),(0,s.kt)("h2",{id:"v380---2021-09-26"},"v3.8.0 - 2021-09-26"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"interactive: true")," setting to improve support for interactive CLI apps\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/217"},"#217"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/563"},"#563"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix some ",(0,s.kt)("inlineCode",{parentName:"li"},"nil")," errors (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/534"},"#534"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/573"},"#573"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ability to declare an included Taskfile as optional (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/519"},"#519"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/552"},"#552"),")."),(0,s.kt)("li",{parentName:"ul"},"Add support for including Taskfiles in the home directory by using ",(0,s.kt)("inlineCode",{parentName:"li"},"~")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/539"},"#539"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/557"},"#557"),").")),(0,s.kt)("h2",{id:"v373---2021-09-04"},"v3.7.3 - 2021-09-04"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add official support to Apple M1 (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/564"},"#564"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/567"},"#567"),")."),(0,s.kt)("li",{parentName:"ul"},"Our ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/homebrew-tap"},"official Homebrew tap")," will\nsupport more platforms, including Apple M1")),(0,s.kt)("h2",{id:"v370---2021-07-31"},"v3.7.0 - 2021-07-31"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"run:")," setting to control if tasks should run multiple times or not.\nAvailable options are ",(0,s.kt)("inlineCode",{parentName:"li"},"always")," (the default), ",(0,s.kt)("inlineCode",{parentName:"li"},"when_changed")," (if a variable\nmodified the task) and ",(0,s.kt)("inlineCode",{parentName:"li"},"once")," (run only once no matter what). This is a long\ntime requested feature. Enjoy! (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/53"},"#53"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/359"},"#359"),").")),(0,s.kt)("h2",{id:"v360---2021-07-10"},"v3.6.0 - 2021-07-10"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Allow using both ",(0,s.kt)("inlineCode",{parentName:"li"},"sources:")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"status:")," in the same task (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/411"},"#411"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/427"},"#427"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/477"},"#477"),")."),(0,s.kt)("li",{parentName:"ul"},"Small optimization and bug fix: don't compute variables if not needed for\n",(0,s.kt)("inlineCode",{parentName:"li"},"dotenv:")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/517"},"#517"),").")),(0,s.kt)("h2",{id:"v350---2021-07-04"},"v3.5.0 - 2021-07-04"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add support for interpolation in ",(0,s.kt)("inlineCode",{parentName:"li"},"dotenv:")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/433"},"#433"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/434"},"#434"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/453"},"#453"),").")),(0,s.kt)("h2",{id:"v343---2021-05-30"},"v3.4.3 - 2021-05-30"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add support for the ",(0,s.kt)("inlineCode",{parentName:"li"},"NO_COLOR")," environment variable. (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/459"},"#459"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/fatih/color/pull/137"},"fatih/color[#137](https://github.com/go-task/task/issues/137)"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix bug where sources were not considering the right directory in ",(0,s.kt)("inlineCode",{parentName:"li"},"--watch"),"\nmode (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/484"},"#484"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/485"},"#485"),").")),(0,s.kt)("h2",{id:"v342---2021-04-23"},"v3.4.2 - 2021-04-23"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"On watch, report which file failed to read (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/472"},"#472"),")."),(0,s.kt)("li",{parentName:"ul"},"Do not try to catch SIGKILL signal, which are not actually possible (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/476"},"#476"),")."),(0,s.kt)("li",{parentName:"ul"},"Improve version reporting when building Task from source using Go Modules\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/462"},"#462"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/473"},"#473"),").")),(0,s.kt)("h2",{id:"v341---2021-04-17"},"v3.4.1 - 2021-04-17"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Improve error reporting when parsing YAML: in some situations where you would\njust see an generic error, you'll now see the actual error with more detail:\nthe YAML line the failed to parse, for example (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/467"},"#467"),")."),(0,s.kt)("li",{parentName:"ul"},"A JSON Schema was published ",(0,s.kt)("a",{parentName:"li",href:"https://json.schemastore.org/taskfile.json"},"here"),"\nand is automatically being used by some editors like Visual Studio Code\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/135"},"#135"),")."),(0,s.kt)("li",{parentName:"ul"},"Print task name before the command in the log output (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/398"},"#398"),").")),(0,s.kt)("h2",{id:"v330---2021-03-20"},"v3.3.0 - 2021-03-20"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add support for delegating CLI arguments to commands with ",(0,s.kt)("inlineCode",{parentName:"li"},"--")," and a special\n",(0,s.kt)("inlineCode",{parentName:"li"},"CLI_ARGS")," variable (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/327"},"#327"),")."),(0,s.kt)("li",{parentName:"ul"},"Add a ",(0,s.kt)("inlineCode",{parentName:"li"},"--concurrency")," (alias ",(0,s.kt)("inlineCode",{parentName:"li"},"-C"),") flag, to limit the number of tasks that run\nconcurrently. This is useful for heavy workloads. (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/345"},"#345"),").")),(0,s.kt)("h2",{id:"v322---2021-01-12"},"v3.2.2 - 2021-01-12"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Improve performance of ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"--summary")," by skipping running shell\nvariables for these flags (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/332"},"#332"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed a bug where an environment in a Taskfile was not always overridable by\nthe system environment (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/425"},"#425"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed environment from .env files not being available as variables (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/379"},"#379"),")."),(0,s.kt)("li",{parentName:"ul"},"The install script is now working for ARM platforms (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/428"},"#428"),").")),(0,s.kt)("h2",{id:"v321---2021-01-09"},"v3.2.1 - 2021-01-09"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fixed some bugs and regressions regarding dynamic variables and directories\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/426"},"#426"),")."),(0,s.kt)("li",{parentName:"ul"},"The ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/slim-sprig"},"slim-sprig")," package was updated\nwith the upstream ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/Masterminds/sprig"},"sprig"),".")),(0,s.kt)("h2",{id:"v320---2021-01-07"},"v3.2.0 - 2021-01-07"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix the ",(0,s.kt)("inlineCode",{parentName:"li"},".task")," directory being created in the task directory instead of the\nTaskfile directory (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/247"},"#247"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix a bug where dynamic variables (those declared with ",(0,s.kt)("inlineCode",{parentName:"li"},"sh:"),") were not running\nin the task directory when the task has a custom dir or it was in an included\nTaskfile (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/384"},"#384"),")."),(0,s.kt)("li",{parentName:"ul"},"The watch feature (via the ",(0,s.kt)("inlineCode",{parentName:"li"},"--watch")," flag) got a few different bug fixes and\nshould be more stable now (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/423"},"#423"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/365"},"#365"),").")),(0,s.kt)("h2",{id:"v310---2021-01-03"},"v3.1.0 - 2021-01-03"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix a bug when the checksum up-to-date resolution is used by a task with a\ncustom ",(0,s.kt)("inlineCode",{parentName:"li"},"label:")," attribute (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/412"},"#412"),")."),(0,s.kt)("li",{parentName:"ul"},"Starting from this release, we're releasing official ARMv6 and ARM64 binaries\nfor Linux (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/375"},"#375"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/418"},"#418"),")."),(0,s.kt)("li",{parentName:"ul"},"Task now respects the order of declaration of included Taskfiles when\nevaluating variables declaring by them (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/393"},"#393"),")."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"set -e")," is now automatically set on every command. This was done to fix an\nissue where multiline string commands wouldn't really fail unless the sentence\nwas in the last line (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/403"},"#403"),").")),(0,s.kt)("h2",{id:"v301---2020-12-26"},"v3.0.1 - 2020-12-26"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Allow use as a library by moving the required packages out of the ",(0,s.kt)("inlineCode",{parentName:"li"},"internal"),"\ndirectory (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/358"},"#358"),")."),(0,s.kt)("li",{parentName:"ul"},"Do not error if a specified dotenv file does not exist (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/378"},"#378"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/385"},"#385"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix panic when you have empty tasks in your Taskfile (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/338"},"#338"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/362"},"#362"),").")),(0,s.kt)("h2",{id:"v300---2020-08-16"},"v3.0.0 - 2020-08-16"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"On ",(0,s.kt)("inlineCode",{parentName:"li"},"v3"),", all CLI variables will be considered global variables (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/336"},"#336"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/341"},"#341"),")"),(0,s.kt)("li",{parentName:"ul"},"Add support to ",(0,s.kt)("inlineCode",{parentName:"li"},".env")," like files (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/324"},"#324"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/356"},"#356"),")."),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"label:")," to task so you can override the task name in the logs\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/321%5D"},"[#321](https://github.com/go-task/task/issues/321)"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/337"},"#337"),")."),(0,s.kt)("li",{parentName:"ul"},"Refactor how variables work on version 3 (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/311"},"#311"),")."),(0,s.kt)("li",{parentName:"ul"},"Disallow ",(0,s.kt)("inlineCode",{parentName:"li"},"expansions")," on v3 since it has no effect."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"Taskvars.yml")," is not automatically included anymore."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile_{{OS}}.yml")," is not automatically included anymore."),(0,s.kt)("li",{parentName:"ul"},"Allow interpolation on ",(0,s.kt)("inlineCode",{parentName:"li"},"includes"),", so you can manually include a Taskfile\nbased on operation system, for example."),(0,s.kt)("li",{parentName:"ul"},"Expose ",(0,s.kt)("inlineCode",{parentName:"li"},".TASK")," variable in templates with the task name (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/252"},"#252"),")."),(0,s.kt)("li",{parentName:"ul"},"Implement short task syntax (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/194"},"#194"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/240"},"#240"),")."),(0,s.kt)("li",{parentName:"ul"},"Added option to make included Taskfile run commands on its own directory\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/260"},"#260"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/144"},"#144"),")"),(0,s.kt)("li",{parentName:"ul"},"Taskfiles in version 1 are not supported anymore (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/237"},"#237"),")."),(0,s.kt)("li",{parentName:"ul"},"Added global ",(0,s.kt)("inlineCode",{parentName:"li"},"method:")," option. With this option, you can set a default method\nto all tasks in a Taskfile (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/246"},"#246"),")."),(0,s.kt)("li",{parentName:"ul"},"Changed default method from ",(0,s.kt)("inlineCode",{parentName:"li"},"timestamp")," to ",(0,s.kt)("inlineCode",{parentName:"li"},"checksum")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/246"},"#246"),")."),(0,s.kt)("li",{parentName:"ul"},"New magic variables are now available when using ",(0,s.kt)("inlineCode",{parentName:"li"},"status:"),": ",(0,s.kt)("inlineCode",{parentName:"li"},".TIMESTAMP")," which\ncontains the greatest modification date from the files listed in ",(0,s.kt)("inlineCode",{parentName:"li"},"sources:"),",\nand ",(0,s.kt)("inlineCode",{parentName:"li"},".CHECKSUM"),", which contains a checksum of all files listed in ",(0,s.kt)("inlineCode",{parentName:"li"},"status:"),".\nThis is useful for manual checking when using external, or even remote,\nartifacts when using ",(0,s.kt)("inlineCode",{parentName:"li"},"status:")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/216"},"#216"),")."),(0,s.kt)("li",{parentName:"ul"},"We're now using ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/slim-sprig"},"slim-sprig")," instead of\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/Masterminds/sprig"},"sprig"),", which allowed a file size\nreduction of about 22% (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/219"},"#219"),")."),(0,s.kt)("li",{parentName:"ul"},"We now use some colors on Task output to better distinguish message types -\ncommands are green, errors are red, etc (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/207"},"#207"),").")),(0,s.kt)("h2",{id:"v281---2020-05-20"},"v2.8.1 - 2020-05-20"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix error code for the ",(0,s.kt)("inlineCode",{parentName:"li"},"--help")," flag (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/300"},"#300"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/330"},"#330"),")."),(0,s.kt)("li",{parentName:"ul"},"Print version to stdout instead of stderr (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/299"},"#299"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/329"},"#329"),")."),(0,s.kt)("li",{parentName:"ul"},"Supress ",(0,s.kt)("inlineCode",{parentName:"li"},"context")," errors when using the ",(0,s.kt)("inlineCode",{parentName:"li"},"--watch")," flag (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/313"},"#313"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/317"},"#317"),")."),(0,s.kt)("li",{parentName:"ul"},"Support templating on description (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/276"},"#276"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/283"},"#283"),").")),(0,s.kt)("h2",{id:"v280---2019-12-07"},"v2.8.0 - 2019-12-07"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"--parallel")," flag (alias ",(0,s.kt)("inlineCode",{parentName:"li"},"-p"),") to run tasks given by the command line in\nparallel (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/266"},"#266"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed bug where calling the ",(0,s.kt)("inlineCode",{parentName:"li"},"task")," CLI only informing global vars would not\nexecute the ",(0,s.kt)("inlineCode",{parentName:"li"},"default")," task."),(0,s.kt)("li",{parentName:"ul"},"Add hability to silent all tasks by adding ",(0,s.kt)("inlineCode",{parentName:"li"},"silent: true")," a the root of the\nTaskfile.")),(0,s.kt)("h2",{id:"v271---2019-11-10"},"v2.7.1 - 2019-11-10"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix error being raised when ",(0,s.kt)("inlineCode",{parentName:"li"},"exit 0")," was called (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/251"},"#251"),").")),(0,s.kt)("h2",{id:"v270---2019-09-22"},"v2.7.0 - 2019-09-22"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fixed panic bug when assigning a global variable (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/229"},"#229"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/243"},"#243"),")."),(0,s.kt)("li",{parentName:"ul"},"A task with ",(0,s.kt)("inlineCode",{parentName:"li"},"method: checksum")," will now re-run if generated files are deleted\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/228"},"#228"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/238"},"#238"),").")),(0,s.kt)("h2",{id:"v260---2019-07-21"},"v2.6.0 - 2019-07-21"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fixed some bugs regarding minor version checks on ",(0,s.kt)("inlineCode",{parentName:"li"},"version:"),"."),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"preconditions:")," to task (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/205"},"#205"),")."),(0,s.kt)("li",{parentName:"ul"},"Create directory informed on ",(0,s.kt)("inlineCode",{parentName:"li"},"dir:")," if it doesn't exist (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/209"},"#209"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/211"},"#211"),")."),(0,s.kt)("li",{parentName:"ul"},"We now have a ",(0,s.kt)("inlineCode",{parentName:"li"},"--taskfile")," flag (alias ",(0,s.kt)("inlineCode",{parentName:"li"},"-t"),"), which can be used to run another\nTaskfile (other than the default ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.yml"),") (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/221"},"#221"),")."),(0,s.kt)("li",{parentName:"ul"},"It's now possible to install Task using Homebrew on Linux\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/homebrew-tap/pull/1"},"go-task/homebrew-tap[#1](https://github.com/go-task/task/issues/1)"),").")),(0,s.kt)("h2",{id:"v252---2019-05-11"},"v2.5.2 - 2019-05-11"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Reverted YAML upgrade due issues with CRLF on Windows (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/201"},"#201"),",\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-yaml/yaml/issues/450"},"go-yaml/yaml[#450](https://github.com/go-task/task/issues/450)"),")."),(0,s.kt)("li",{parentName:"ul"},"Allow setting global variables through the CLI (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/192"},"#192"),").")),(0,s.kt)("h2",{id:"251---2019-04-27"},"2.5.1 - 2019-04-27"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fixed some issues with interactive command line tools, where sometimes the\noutput were not being shown, and similar issues (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/114"},"#114"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/190"},"#190"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/200"},"#200"),")."),(0,s.kt)("li",{parentName:"ul"},"Upgraded ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-yaml/yaml"},"go-yaml/yaml")," from v2 to v3.")),(0,s.kt)("h2",{id:"v250---2019-03-16"},"v2.5.0 - 2019-03-16"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"We moved from the taskfile.org domain to the new fancy taskfile.dev domain.\nWhile stuff is being redirected, we strongly recommend to everyone that use\n",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.dev/#/installation?id=install-script"},"this install script"),"\nto use the new taskfile.dev domain on scripts from now on."),(0,s.kt)("li",{parentName:"ul"},"Fixed to the ZSH completion (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/182"},"#182"),")."),(0,s.kt)("li",{parentName:"ul"},"Add\n",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.org/#/usage?id=display-summary-of-task"},(0,s.kt)("inlineCode",{parentName:"a"},"--summary")," flag along with ",(0,s.kt)("inlineCode",{parentName:"a"},"summary:")," task attribute"),"\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/180"},"#180"),").")),(0,s.kt)("h2",{id:"v240---2019-02-21"},"v2.4.0 - 2019-02-21"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Allow calling a task of the root Taskfile from an included Taskfile by\nprefixing it with ",(0,s.kt)("inlineCode",{parentName:"li"},":")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/161"},"#161"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/172"},"#172"),")."),(0,s.kt)("li",{parentName:"ul"},"Add flag to override the ",(0,s.kt)("inlineCode",{parentName:"li"},"output")," option (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/173"},"#173"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix bug where Task was persisting the new checksum on the disk when the Dry\nMode is enabled (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/166"},"#166"),")."),(0,s.kt)("li",{parentName:"ul"},"Fix file timestamp issue when the file name has spaces (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/176"},"#176"),")."),(0,s.kt)("li",{parentName:"ul"},"Mitigating path expanding issues on Windows (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/170"},"#170"),").")),(0,s.kt)("h2",{id:"v230---2019-01-02"},"v2.3.0 - 2019-01-02"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"On Windows, Task can now be installed using ",(0,s.kt)("a",{parentName:"li",href:"https://scoop.sh/"},"Scoop")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/152"},"#152"),")."),(0,s.kt)("li",{parentName:"ul"},"Fixed issue with file/directory globing (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/153"},"#153"),")."),(0,s.kt)("li",{parentName:"ul"},"Added ability to globally set environment variables (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/138"},"#138"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/159"},"#159"),").")),(0,s.kt)("h2",{id:"v221---2018-12-09"},"v2.2.1 - 2018-12-09"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"This repository now uses Go Modules (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/143"},"#143"),"). We'll still keep the ",(0,s.kt)("inlineCode",{parentName:"li"},"vendor"),"\ndirectory in sync for some time, though;"),(0,s.kt)("li",{parentName:"ul"},"Fixing a bug when the Taskfile has no tasks but includes another Taskfile\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/150"},"#150"),");"),(0,s.kt)("li",{parentName:"ul"},"Fix a bug when calling another task or a dependency in an included Taskfile\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/151"},"#151"),").")),(0,s.kt)("h2",{id:"v220---2018-10-25"},"v2.2.0 - 2018-10-25"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Added support for\n",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.org/#/usage?id=including-other-taskfiles"},"including other Taskfiles"),"\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/98"},"#98"),")",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"This should be considered experimental. For now, only including local files\nis supported, but support for including remote Taskfiles is being discussed.\nIf you have any feedback, please comment on ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/98"},"#98"),"."))),(0,s.kt)("li",{parentName:"ul"},"Task now have a dedicated documentation site: ",(0,s.kt)("a",{parentName:"li",href:"https://taskfile.org"},"https://taskfile.org"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Thanks to ",(0,s.kt)("a",{parentName:"li",href:"https://docsify.js.org/"},"Docsify")," for making this pretty easy. To\ncheck the source code, just take a look at the\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/tree/main/docs"},"docs")," directory of this\nrepository. Contributions to the documentation is really appreciated.")))),(0,s.kt)("h2",{id:"v211---2018-09-17"},"v2.1.1 - 2018-09-17"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix suggestion to use ",(0,s.kt)("inlineCode",{parentName:"li"},"task --init")," not being shown anymore (when a\n",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.yml")," is not found)"),(0,s.kt)("li",{parentName:"ul"},"Fix error when using checksum method and no file exists for a source glob\n(",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/131"},"#131"),")"),(0,s.kt)("li",{parentName:"ul"},"Fix signal handling when the ",(0,s.kt)("inlineCode",{parentName:"li"},"--watch")," flag is given (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/132"},"#132"),")")),(0,s.kt)("h2",{id:"v210---2018-08-19"},"v2.1.0 - 2018-08-19"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add a ",(0,s.kt)("inlineCode",{parentName:"li"},"ignore_error")," option to task and command (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/123"},"#123"),")"),(0,s.kt)("li",{parentName:"ul"},"Add a dry run mode (",(0,s.kt)("inlineCode",{parentName:"li"},"--dry")," flag) (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/126"},"#126"),")")),(0,s.kt)("h2",{id:"v203---2018-06-24"},"v2.0.3 - 2018-06-24"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},'Expand environment variables on "dir", "sources" and "generates" (',(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/116"},"#116"),")"),(0,s.kt)("li",{parentName:"ul"},"Fix YAML merging syntax (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/112"},"#112"),")"),(0,s.kt)("li",{parentName:"ul"},"Add ZSH completion (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/111"},"#111"),")"),(0,s.kt)("li",{parentName:"ul"},"Implement new ",(0,s.kt)("inlineCode",{parentName:"li"},"output")," option. Please check out the\n",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task#output-syntax"},"documentation"))),(0,s.kt)("h2",{id:"v202---2018-05-01"},"v2.0.2 - 2018-05-01"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix merging of YAML anchors (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/112"},"#112"),")")),(0,s.kt)("h2",{id:"v201---2018-03-11"},"v2.0.1 - 2018-03-11"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fixes panic on ",(0,s.kt)("inlineCode",{parentName:"li"},"task --list"))),(0,s.kt)("h2",{id:"v200---2018-03-08"},"v2.0.0 - 2018-03-08"),(0,s.kt)("p",null,"Version 2.0.0 is here, with a new Taskfile format."),(0,s.kt)("p",null,"Please, make sure to read the\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/blob/main/TASKFILE_VERSIONS.md"},"Taskfile versions"),"\ndocument, since it describes in depth what changed for this version."),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"New Taskfile version 2 (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/77"},"#77"),")"),(0,s.kt)("li",{parentName:"ul"},"Possibility to have global variables in the ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskfile.yml")," instead of\n",(0,s.kt)("inlineCode",{parentName:"li"},"Taskvars.yml")," (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/66"},"#66"),")"),(0,s.kt)("li",{parentName:"ul"},"Small improvements and fixes")),(0,s.kt)("h2",{id:"v144---2017-11-19"},"v1.4.4 - 2017-11-19"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Handle SIGINT and SIGTERM (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/75"},"#75"),");"),(0,s.kt)("li",{parentName:"ul"},"List: print message with there's no task with description;"),(0,s.kt)("li",{parentName:"ul"},'Expand home dir ("~" symbol) on paths (',(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/74"},"#74"),");"),(0,s.kt)("li",{parentName:"ul"},"Add Snap as an installation method;"),(0,s.kt)("li",{parentName:"ul"},"Move examples to its own repo;"),(0,s.kt)("li",{parentName:"ul"},'Watch: also walk on tasks called on on "cmds", and not only on "deps";'),(0,s.kt)("li",{parentName:"ul"},"Print logs to stderr instead of stdout (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/68"},"#68"),");"),(0,s.kt)("li",{parentName:"ul"},"Remove deprecated ",(0,s.kt)("inlineCode",{parentName:"li"},"set")," keyword;"),(0,s.kt)("li",{parentName:"ul"},"Add checksum based status check, alternative to timestamp based.")),(0,s.kt)("h2",{id:"v143---2017-09-07"},"v1.4.3 - 2017-09-07"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Allow assigning variables to tasks at run time via CLI (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/33"},"#33"),")"),(0,s.kt)("li",{parentName:"ul"},"Added suport for multiline variables from sh (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/64"},"#64"),")"),(0,s.kt)("li",{parentName:"ul"},"Fixes env: remove square braces and evaluate shell (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/62"},"#62"),")"),(0,s.kt)("li",{parentName:"ul"},"Watch: change watch library and few fixes and improvements"),(0,s.kt)("li",{parentName:"ul"},"When use watching, cancel and restart long running process on file change (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/59"},"#59"),"\nand ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/60"},"#60"),")")),(0,s.kt)("h2",{id:"v142---2017-07-30"},"v1.4.2 - 2017-07-30"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Flag to set directory of execution"),(0,s.kt)("li",{parentName:"ul"},"Always echo command if is verbose mode"),(0,s.kt)("li",{parentName:"ul"},"Add silent mode to disable echoing of commands"),(0,s.kt)("li",{parentName:"ul"},"Fixes and improvements of variables (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/56"},"#56"),")")),(0,s.kt)("h2",{id:"v141---2017-07-15"},"v1.4.1 - 2017-07-15"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Allow use of YAML for dynamic variables instead of $ prefix",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"VAR: {sh: echo Hello}")," instead of ",(0,s.kt)("inlineCode",{parentName:"li"},"VAR: $echo Hello")))),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"--list")," (or ",(0,s.kt)("inlineCode",{parentName:"li"},"-l"),") flag to print existing tasks"),(0,s.kt)("li",{parentName:"ul"},"OS specific Taskvars file (e.g. ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskvars_windows.yml"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"Taskvars_linux.yml"),",\netc)"),(0,s.kt)("li",{parentName:"ul"},"Consider task up-to-date on equal timestamps (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/49"},"#49"),")"),(0,s.kt)("li",{parentName:"ul"},"Allow absolute path in generates section (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/48"},"#48"),")"),(0,s.kt)("li",{parentName:"ul"},"Bugfix: allow templating when calling deps (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/42"},"#42"),")"),(0,s.kt)("li",{parentName:"ul"},"Fix panic for invalid task in cyclic dep detection"),(0,s.kt)("li",{parentName:"ul"},"Better error output for dynamic variables in Taskvars.yml (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/41"},"#41"),")"),(0,s.kt)("li",{parentName:"ul"},"Allow template evaluation in parameters")),(0,s.kt)("h2",{id:"v140---2017-07-06"},"v1.4.0 - 2017-07-06"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Cache dynamic variables"),(0,s.kt)("li",{parentName:"ul"},"Add verbose mode (",(0,s.kt)("inlineCode",{parentName:"li"},"-v")," flag)"),(0,s.kt)("li",{parentName:"ul"},"Support to task parameters (overriding vars) (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/31"},"#31"),") (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/32"},"#32"),")"),(0,s.kt)("li",{parentName:"ul"},'Print command, also when "set:" is specified (',(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/35"},"#35"),")"),(0,s.kt)("li",{parentName:"ul"},"Improve task command help text (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/35"},"#35"),")")),(0,s.kt)("h2",{id:"v131---2017-06-14"},"v1.3.1 - 2017-06-14"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Fix glob not working on commands (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/28"},"#28"),")"),(0,s.kt)("li",{parentName:"ul"},"Add ExeExt template function"),(0,s.kt)("li",{parentName:"ul"},"Add ",(0,s.kt)("inlineCode",{parentName:"li"},"--init")," flag to create a new Taskfile"),(0,s.kt)("li",{parentName:"ul"},"Add status option to prevent task from running (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/27"},"#27"),")"),(0,s.kt)("li",{parentName:"ul"},"Allow interpolation on ",(0,s.kt)("inlineCode",{parentName:"li"},"generates")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"sources")," attributes (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/26"},"#26"),")")),(0,s.kt)("h2",{id:"v130---2017-04-24"},"v1.3.0 - 2017-04-24"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Migrate from os/exec.Cmd to a native Go sh/bash interpreter",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"This is a potentially breaking change if you use Windows."),(0,s.kt)("li",{parentName:"ul"},"Now, ",(0,s.kt)("inlineCode",{parentName:"li"},"cmd")," is not used anymore on Windows. Always use Bash-like syntax for\nyour commands, even on Windows."))),(0,s.kt)("li",{parentName:"ul"},'Add "ToSlash" and "FromSlash" to template functions'),(0,s.kt)("li",{parentName:"ul"},"Use functions defined on github.com/Masterminds/sprig"),(0,s.kt)("li",{parentName:"ul"},"Do not redirect stdin while running variables commands"),(0,s.kt)("li",{parentName:"ul"},"Using ",(0,s.kt)("inlineCode",{parentName:"li"},"context")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"errgroup")," packages (this will make other tasks to be\ncancelled, if one returned an error)")),(0,s.kt)("h2",{id:"v120---2017-04-02"},"v1.2.0 - 2017-04-02"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"More tests and Travis integration"),(0,s.kt)("li",{parentName:"ul"},"Watch a task (experimental)"),(0,s.kt)("li",{parentName:"ul"},"Possibility to call another task"),(0,s.kt)("li",{parentName:"ul"},'Fix "=" not being reconized in variables/environment variables'),(0,s.kt)("li",{parentName:"ul"},"Tasks can now have a description, and help will print them (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/10"},"#10"),")"),(0,s.kt)("li",{parentName:"ul"},"Task dependencies now run concurrently"),(0,s.kt)("li",{parentName:"ul"},"Support for a default task (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/16"},"#16"),")")),(0,s.kt)("h2",{id:"v110---2017-03-08"},"v1.1.0 - 2017-03-08"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Support for YAML, TOML and JSON (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/1"},"#1"),")"),(0,s.kt)("li",{parentName:"ul"},"Support running command in another directory (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/4"},"#4"),")"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"--force")," or ",(0,s.kt)("inlineCode",{parentName:"li"},"-f")," flag to force execution of task even when it's up-to-date"),(0,s.kt)("li",{parentName:"ul"},"Detection of cyclic dependencies (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/5"},"#5"),")"),(0,s.kt)("li",{parentName:"ul"},"Support for variables (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/6"},"#6"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/9"},"#9"),", ",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/14"},"#14"),")"),(0,s.kt)("li",{parentName:"ul"},"Operation System specific commands and variables (",(0,s.kt)("a",{parentName:"li",href:"https://github.com/go-task/task/issues/13"},"#13"),")")),(0,s.kt)("h2",{id:"v100---2017-02-28"},"v1.0.0 - 2017-02-28"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Add LICENSE file")))}m.isMDXComponent=!0}}]); |