def log(self, msg: str) -> None:
         super().log(msg)
-        if not exists(_PATH_LOGS):
-            makedirs(_PATH_LOGS)
-        with open(f'{_PATH_LOGS}/{self._title}.txt', 'a', encoding='utf8'
-                  ) as f:
+        ldir = f'{_PATH_LOGS}/{self._title}'
+        if not exists(ldir):
+            makedirs(ldir)
+        with open(f'{ldir}/{self._last_today}.txt', 'a', encoding='utf8') as f:
             f.write(msg + '\n')
 
     def _send_msg(self, verb: str, params: tuple[str, ...]) -> None:
 
     _drawable = False
     prompt: PromptWidget
     _title = ':start'
+    _last_today = ''
 
     def __init__(self, idx: int, term: 'Terminal', **kwargs) -> None:
         super().__init__(**kwargs)
         if hasattr(self._term, 'size'):
             self.set_geometry()
 
+    def ensure_date(self, today: str) -> None:
+        'Log date of today if it has not been logged yet.'
+        if today != self._last_today:
+            self._last_today = today
+            self.log(today)
+
     def log(self, msg: str) -> None:
         'Append msg to .history.'
         self.history.append(msg)
         prefix = kwargs.get('prefix', _LOG_PREFIX_DEFAULT)
         if kwargs.get('alert', False):
             prefix = _LOG_PREFIX_ALERT + prefix
-        msg = f'{str(datetime.now())[11:19]} {prefix} {msg}'
+        now = str(datetime.now())
+        today, time = now[:10], now[11:19]
+        msg = f'{time} {prefix} {msg}'
         affected_win_indices = []
         for win in self._log_target_wins(**kwargs):
             affected_win_indices += [win.idx]
+            win.ensure_date(today)
             win.log(msg)
             if win != self.window:
                 self._status_line.taint()