|  | @@ -5,23 +5,40 @@ const path = require("path");
 | 
	
		
			
				|  |  |  const versionFile = path.join("build", "version.json");
 | 
	
		
			
				|  |  |  const indexFile = path.join("build", "index.html");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const zero = (digit) => `0${digit}`.slice(-2);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -const versionDate = (date) => {
 | 
	
		
			
				|  |  | -  const date_ = `${date.getFullYear()}-${zero(date.getMonth() + 1)}-${zero(
 | 
	
		
			
				|  |  | -    date.getDate(),
 | 
	
		
			
				|  |  | -  )}`;
 | 
	
		
			
				|  |  | -  const time = `${zero(date.getHours())}-${zero(date.getMinutes())}-${zero(
 | 
	
		
			
				|  |  | -    date.getSeconds(),
 | 
	
		
			
				|  |  | -  )}`;
 | 
	
		
			
				|  |  | -  return `${date_}-${time}`;
 | 
	
		
			
				|  |  | +const versionDate = (date) => date.toISOString().replace(".000", "");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const commitHash = () => {
 | 
	
		
			
				|  |  | +  try {
 | 
	
		
			
				|  |  | +    return require("child_process")
 | 
	
		
			
				|  |  | +      .execSync("git rev-parse --short HEAD")
 | 
	
		
			
				|  |  | +      .toString()
 | 
	
		
			
				|  |  | +      .trim();
 | 
	
		
			
				|  |  | +  } catch {
 | 
	
		
			
				|  |  | +    return "none";
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const now = new Date();
 | 
	
		
			
				|  |  | +const commitDate = (hash) => {
 | 
	
		
			
				|  |  | +  try {
 | 
	
		
			
				|  |  | +    const unix = require("child_process")
 | 
	
		
			
				|  |  | +      .execSync(`git show -s --format=%ct ${hash}`)
 | 
	
		
			
				|  |  | +      .toString()
 | 
	
		
			
				|  |  | +      .trim();
 | 
	
		
			
				|  |  | +    const date = new Date(parseInt(unix) * 1000);
 | 
	
		
			
				|  |  | +    return versionDate(date);
 | 
	
		
			
				|  |  | +  } catch {
 | 
	
		
			
				|  |  | +    return versionDate(new Date());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const getFullVersion = () => {
 | 
	
		
			
				|  |  | +  const hash = commitHash();
 | 
	
		
			
				|  |  | +  return `${commitDate(hash)}-${hash}`;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const data = JSON.stringify(
 | 
	
		
			
				|  |  |    {
 | 
	
		
			
				|  |  | -    version: versionDate(now),
 | 
	
		
			
				|  |  | +    version: getFullVersion(),
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    undefined,
 | 
	
		
			
				|  |  |    2,
 | 
	
	
		
			
				|  | @@ -34,7 +51,7 @@ fs.readFile(indexFile, "utf8", (error, data) => {
 | 
	
		
			
				|  |  |    if (error) {
 | 
	
		
			
				|  |  |      return console.error(error);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  const result = data.replace(/{version}/g, versionDate(now));
 | 
	
		
			
				|  |  | +  const result = data.replace(/{version}/g, getFullVersion());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    fs.writeFile(indexFile, result, "utf8", (error) => {
 | 
	
		
			
				|  |  |      if (error) {
 |