Follow-up from the review of #389. Deferred there deliberately: the rendering lives in _print_running_list, which conductor stop shares, so fixing it in one place beats widening that PR.
The problem
conductor status adds a Dashboard column whose stated purpose is that the URL "is otherwise unrecoverable once the launching terminal is gone". At the default 80-column width it is the column that gets elided.
Reproduced with a PID file written by the real write_pid_file:
┏━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓
┃ Port ┃ PID ┃ Workflow ┃ Started ┃ Dashboard ┃
┡━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
│ 53941 │ 72319 │ code-review-pipel… │ 2026-08-11T12:48:… │ http://127.0.0.1:… │
└───────┴───────┴────────────────────┴────────────────────┴────────────────────┘
Rich tables crop rather than wrap, so the URL is not recoverable from the output — only reconstructable by hand from the Port column, which defeats the point of printing it.
Why it survived review
The existing test hides it. tests/test_cli/test_status.py hand-builds its PID JSON with "started_at": "2026-03-03T00:00:00" (19 chars) and a 2-char workflow stem, where production writes datetime.now(UTC).isoformat() — "2026-08-11T12:48:33.176560+00:00", 32 chars, 13 wider. At those widths the URL fits and the assertion passes.
Two things worth fixing together:
- The rendering itself.
- The fixture, which should go through
conductor.cli.pid.write_pid_file() so column widths track production automatically. That divergence is what let this through.
Options
overflow="fold" on the Dashboard column so the URL wraps instead of cropping.
- Trim sub-second precision from
Started — it is eating ~13 characters of width for no reader benefit.
- Drop
Started entirely when show_url=True.
Any of these is fine; the fixture change is the part that keeps it fixed. A test pinned at COLUMNS=80 (the _WIDE idiom in test_help_panels.py, inverted) would assert the URL survives a realistic terminal.
Affects conductor status today. conductor stop shares _print_running_list but passes show_url=False, so it is unaffected unless that changes.
Follow-up from the review of #389. Deferred there deliberately: the rendering lives in
_print_running_list, whichconductor stopshares, so fixing it in one place beats widening that PR.The problem
conductor statusadds a Dashboard column whose stated purpose is that the URL "is otherwise unrecoverable once the launching terminal is gone". At the default 80-column width it is the column that gets elided.Reproduced with a PID file written by the real
write_pid_file:Rich tables crop rather than wrap, so the URL is not recoverable from the output — only reconstructable by hand from the Port column, which defeats the point of printing it.
Why it survived review
The existing test hides it.
tests/test_cli/test_status.pyhand-builds its PID JSON with"started_at": "2026-03-03T00:00:00"(19 chars) and a 2-char workflow stem, where production writesdatetime.now(UTC).isoformat()—"2026-08-11T12:48:33.176560+00:00", 32 chars, 13 wider. At those widths the URL fits and the assertion passes.Two things worth fixing together:
conductor.cli.pid.write_pid_file()so column widths track production automatically. That divergence is what let this through.Options
overflow="fold"on the Dashboard column so the URL wraps instead of cropping.Started— it is eating ~13 characters of width for no reader benefit.Startedentirely whenshow_url=True.Any of these is fine; the fixture change is the part that keeps it fixed. A test pinned at
COLUMNS=80(the_WIDEidiom intest_help_panels.py, inverted) would assert the URL survives a realistic terminal.Affects
conductor statustoday.conductor stopshares_print_running_listbut passesshow_url=False, so it is unaffected unless that changes.