--- PATCHES.orig	2026-08-08 00:00:00 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.0.ats.date_conditional.1
--- hdrline.c.orig	2026-08-08 00:00:00 UTC
+++ hdrline.c
@@ -344,7 +344,58 @@
       const char *cp;
       struct tm *tm;
       time_t T;
+      int i = 0, invert = 0;
+
+      if (optional && (op == '[' || op == '('))
+      {
+        char *is;
+        T = time(NULL);
+        T -= (op == '(') ? hdr->received : hdr->date_sent;
 
+        is = (char *)prefix;
+        if (*is == '>')
+        {
+          invert = 1;
+          ++is;
+        }
+
+        while (*is && *is != '?')
+        {
+          int t = strtol(is, &is, 10);
+          switch (*(is++))
+          {
+            case '?':
+              break;
+            case 'y':
+              t *= 365 * 24 * 60 * 60;
+              break;
+            case 'M':
+              t *= 30 * 24 * 60 * 60;
+              break;
+            case 'w':
+              t *= 7 * 24 * 60 * 60;
+              break;
+            case 'd':
+              t *= 24 * 60 * 60;
+              break;
+            case 'h':
+              t *= 60 * 60;
+              break;
+            case 'm':
+              t *= 60;
+              break;
+          }
+          i += t;
+        }
+
+        if (i < 0)
+          i *= -1;
+
+        if ((T > i || T < -1*i) ^ invert)
+          optional = 0;
+        break;
+      }
+
       p = dest;
 
       cp = (op == 'd' || op == 'D') ? (NONULL(DateFmt)) : src;
--- muttlib.c.orig	2026-08-08 00:00:00 UTC
+++ muttlib.c
@@ -1713,7 +1713,16 @@
       if (*src == '?')
       {
         flags |= MUTT_FORMAT_OPTIONAL;
-        src++;
+        ch = *(++src); /* save the character to switch on */
+        cp = prefix;
+        ++src;
+        count = 0;
+        while (count < sizeof(prefix) && *src != '?')
+        {
+          *cp++ = *src++;
+          count++;
+        }
+        *cp = 0;
       }
       else
       {
@@ -1729,12 +1738,12 @@
           count++;
         }
         *cp = 0;
-      }
 
-      if (!*src)
-        break; /* bad format */
+        if (!*src)
+          break; /* bad format */
 
-      ch = *src++; /* save the character to switch on */
+        ch = *src++; /* save the character to switch on */
+      }
 
       if (flags & MUTT_FORMAT_OPTIONAL)
       {
