alt-glitch
fc4dbe32df
fix(logs): hermes logs --since/--level handle unstamped lines and MCP output
...
`hermes logs --since` and `--level` passed every line that had no leading
timestamp. A traceback's frames are written without one, so an old error
printed its frames without the header that was filtered out, and
`--component` dropped the frames of a matching record. `hermes logs` now
reads each unstamped line as part of the record above it: the line gets
that record's verdict for every filter, in the tail read and in `-f`.
Lines before the first stamp in the read window have an unknown time and
level, so they are dropped when `--since` or `--level` is set.
mcp-stderr.log had no parseable stamp at all: the banner started with
`=====` and server output was copied raw, so `hermes logs mcp --since`
printed the whole file. The stderr tee already reads each server's
stderr in a thread, so it now writes one line at a time, each prefixed
with the asctime-shaped local stamp the Python logs use. The banner
starts with the same stamp. The stamp comes from new public
`timestamp()`/`stamp_line()` in hermes_cli/stderr_timestamp.py, which
stays stdlib-only. The desktop MCP log view accepts both banner shapes.
A test now requires a real writer's sample line for every LOG_FILES
entry to parse with `_parse_line_timestamp`. The docs no longer say the
`timezone` key changes log timestamps; log lines use the machine's
local time.
2026-09-28 19:02:20 +05:30
..
2026-09-28 03:34:07 -07:00
2026-09-28 03:34:07 -07:00
2026-09-23 06:46:02 -07:00
2026-09-28 04:04:23 -07:00
2026-09-21 15:02:49 -07:00
2026-09-20 15:32:00 -07:00
2026-09-20 15:32:42 -07:00
2026-09-25 16:24:21 -05:00
2026-09-20 18:50:37 -07:00
2026-09-28 05:37:55 -07:00
2026-09-20 10:16:51 -07:00
2026-09-21 00:58:39 -04:00
2026-09-27 13:48:28 -05:00
2026-09-28 06:06:17 -07:00
2026-09-27 13:48:28 -05:00
2026-09-23 20:04:27 -04:00
2026-09-24 11:50:30 -04:00
2026-09-23 10:13:26 -04:00
2026-09-23 07:36:31 -04:00
2026-09-23 07:36:31 -04:00
2026-09-28 03:34:07 -07:00
2026-09-28 03:34:07 -07:00
2026-09-28 03:34:07 -07:00
2026-09-24 01:55:51 -04:00
2026-09-24 03:42:38 -04:00
2026-09-24 01:55:51 -04:00
2026-09-19 01:03:23 -04:00
2026-09-19 10:44:26 -07:00
2026-09-27 00:56:31 +05:30
2026-09-27 00:56:31 +05:30
2026-09-27 00:56:31 +05:30
2026-09-20 15:49:52 -07:00
2026-09-26 18:00:17 -05:00
2026-09-28 02:32:05 +05:30
2026-09-28 05:28:05 -07:00
2026-09-27 18:17:20 +05:30
2026-09-23 10:42:18 -04:00
2026-09-20 09:52:22 -07:00
2026-09-19 23:57:59 -07:00
2026-09-22 13:57:51 +05:30
2026-09-25 17:33:06 -05:00
2026-09-20 12:53:47 -07:00
2026-09-21 14:01:47 -04:00
2026-09-25 14:58:09 -04:00
2026-09-27 22:30:55 -07:00
2026-09-21 00:58:39 -04:00
2026-09-26 18:27:10 -05:00
2026-09-27 01:10:56 +05:30
2026-09-21 18:39:24 -07:00
2026-09-26 22:26:05 +05:30
2026-09-26 17:34:46 -05:00
2026-09-24 15:58:26 +05:30
2026-09-21 10:40:03 -07:00
2026-09-26 18:27:10 -05:00
2026-09-19 10:44:26 -07:00
2026-09-26 11:16:45 -07:00
2026-09-23 10:07:51 -07:00
2026-09-23 06:46:02 -07:00
2026-09-21 10:04:32 +05:30
2026-09-27 06:26:52 -05:00
2026-09-20 18:22:18 -07:00
2026-09-25 14:27:51 +05:30
2026-09-23 11:41:01 -04:00
2026-09-21 19:08:19 -04:00
2026-09-23 15:43:51 -07:00
2026-09-28 02:03:42 +05:30
2026-09-28 19:02:20 +05:30
2026-09-28 05:24:26 -07:00
2026-09-27 21:30:10 -07:00
2026-09-22 17:54:42 +05:30
2026-09-26 20:58:16 -04:00
2026-09-27 21:30:10 -07:00
2026-09-26 22:40:54 +05:30
2026-09-21 13:14:22 -07:00
2026-09-28 05:24:26 -07:00
2026-09-27 21:30:10 -07:00
2026-09-26 22:40:54 +05:30
2026-09-24 15:38:22 +05:30
2026-09-24 15:38:22 +05:30
2026-09-26 16:51:19 -05:00
2026-09-23 06:46:02 -07:00
2026-09-25 14:58:09 -04:00
2026-09-20 10:57:35 -07:00
2026-09-20 11:49:00 -07:00
2026-09-21 00:58:39 -04:00
2026-09-26 17:19:34 -05:00
2026-09-26 22:19:53 -05:00
2026-09-28 05:37:55 -07:00
2026-09-24 03:52:03 -05:00
2026-09-19 22:57:07 -04:00
2026-09-25 12:10:14 -05:00
2026-09-23 15:26:34 -04:00
2026-09-19 10:16:59 -07:00
2026-09-23 18:52:49 -05:00
2026-09-21 19:08:19 -04:00
2026-09-20 11:12:48 -07:00
2026-09-23 18:29:35 -05:00
2026-09-22 07:05:11 -04:00
2026-09-22 05:16:50 -04:00
2026-09-24 16:49:18 +05:30
2026-09-24 07:39:33 -04:00
2026-09-27 02:33:57 +05:30
2026-09-21 00:58:39 -04:00
2026-09-22 15:59:17 +05:30
2026-09-22 07:05:11 -04:00
2026-09-20 16:00:26 -07:00
2026-09-22 07:05:11 -04:00
2026-09-22 15:59:17 +05:30
2026-09-20 12:58:32 -07:00
2026-09-22 09:28:52 -04:00
2026-09-25 14:24:56 -05:00
2026-09-22 09:55:47 -04:00
2026-09-19 01:29:03 -07:00
2026-09-28 03:34:07 -07:00
2026-09-28 03:34:07 -07:00
2026-09-26 18:27:10 -05:00
2026-09-26 18:27:10 -05:00
2026-09-26 18:27:10 -05:00
2026-09-23 17:09:54 -07:00
2026-09-26 23:44:55 +05:30
2026-09-28 04:34:30 -07:00
2026-09-20 11:30:03 -07:00
2026-09-24 14:23:47 -04:00
2026-09-27 18:34:12 +05:30
2026-09-20 10:17:04 -07:00
2026-09-22 13:57:51 +05:30
2026-09-27 01:29:25 -04:00
2026-09-22 17:54:42 +05:30
2026-09-19 10:03:11 -07:00
2026-09-23 11:54:30 +05:30
2026-09-22 05:16:50 -04:00
2026-09-27 03:45:07 -04:00
2026-09-27 03:45:07 -04:00
2026-09-22 05:16:50 -04:00
2026-09-26 06:19:34 +05:30
2026-09-23 18:30:12 -05:00
2026-09-24 03:48:31 -04:00
2026-09-19 10:10:29 -07:00
2026-09-26 06:19:34 +05:30
2026-09-20 10:25:30 -07:00
2026-09-21 19:08:19 -04:00
2026-09-20 15:28:59 -07:00
2026-09-19 12:22:44 -07:00
2026-09-19 09:52:18 -07:00
2026-09-19 22:57:07 -04:00
2026-09-21 00:58:39 -04:00
2026-09-19 10:54:38 -07:00
2026-09-26 06:19:34 +05:30
2026-09-21 19:08:19 -04:00
2026-09-24 16:17:16 -04:00
2026-09-19 03:07:47 -07:00
2026-09-24 16:17:16 -04:00
2026-09-23 11:41:01 -04:00
2026-09-19 12:22:44 -07:00