From ec00a40aefca73596ab76e3ebe3a8e1129b43688 Mon Sep 17 00:00:00 2001
From: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 27 Jan 2026 18:27:17 +0000
Subject: [PATCH] chore(deps): bump the production-dependencies group with 4 updates (#2289)

---
 quartz/plugins/transformers/lastmod.ts |   29 ++++++++++++++++++++++++-----
 1 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/quartz/plugins/transformers/lastmod.ts b/quartz/plugins/transformers/lastmod.ts
index 09c1294..32a89cc 100644
--- a/quartz/plugins/transformers/lastmod.ts
+++ b/quartz/plugins/transformers/lastmod.ts
@@ -1,7 +1,8 @@
 import fs from "fs"
 import { Repository } from "@napi-rs/simple-git"
 import { QuartzTransformerPlugin } from "../types"
-import chalk from "chalk"
+import path from "path"
+import { styleText } from "util"
 
 export interface Options {
   priority: ("frontmatter" | "git" | "filesystem")[]
@@ -11,12 +12,23 @@
   priority: ["frontmatter", "git", "filesystem"],
 }
 
+// YYYY-MM-DD
+const iso8601DateOnlyRegex = /^\d{4}-\d{2}-\d{2}$/
+
 function coerceDate(fp: string, d: any): Date {
+  // check ISO8601 date-only format
+  // we treat this one as local midnight as the normal
+  // js date ctor treats YYYY-MM-DD as UTC midnight
+  if (typeof d === "string" && iso8601DateOnlyRegex.test(d)) {
+    d = `${d}T00:00:00`
+  }
+
   const dt = new Date(d)
   const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0
   if (invalidDate && d !== undefined) {
     console.log(
-      chalk.yellow(
+      styleText(
+        "yellow",
         `\nWarning: found invalid date "${d}" in \`${fp}\`. Supported formats: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format`,
       ),
     )
@@ -34,12 +46,17 @@
       return [
         () => {
           let repo: Repository | undefined = undefined
+          let repositoryWorkdir: string
           if (opts.priority.includes("git")) {
             try {
               repo = Repository.discover(ctx.argv.directory)
+              repositoryWorkdir = repo.workdir() ?? ctx.argv.directory
             } catch (e) {
               console.log(
-                chalk.yellow(`\nWarning: couldn't find git repository for ${ctx.argv.directory}`),
+                styleText(
+                  "yellow",
+                  `\nWarning: couldn't find git repository for ${ctx.argv.directory}`,
+                ),
               )
             }
           }
@@ -62,10 +79,12 @@
                 published ||= file.data.frontmatter.published as MaybeDate
               } else if (source === "git" && repo) {
                 try {
-                  modified ||= await repo.getFileLatestModifiedDateAsync(fullFp)
+                  const relativePath = path.relative(repositoryWorkdir, fullFp)
+                  modified ||= await repo.getFileLatestModifiedDateAsync(relativePath)
                 } catch {
                   console.log(
-                    chalk.yellow(
+                    styleText(
+                      "yellow",
                       `\nWarning: ${file.data.filePath!} isn't yet tracked by git, dates will be inaccurate`,
                     ),
                   )

--
Gitblit v1.10.0