Skip to content

Dashboard URL is cropped out of conductor status at default terminal width — the one field the command exists to surface #405

Description

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:

  1. The rendering itself.
  2. 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.

Metadata

Metadata

Labels

area:bgBackground process (--web-bg) lifecyclearea:cliCLI commands and entry pointsbugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions