Skip to content

fix(cli): fold dashboard URL instead of cropping in conductor status - #413

Merged
Jason Robert (jrob5756) merged 2 commits into
mainfrom
fix/405-dashboard-url-cropped
Aug 11, 2026
Merged

fix(cli): fold dashboard URL instead of cropping in conductor status#413
Jason Robert (jrob5756) merged 2 commits into
mainfrom
fix/405-dashboard-url-cropped

Conversation

@jrob5756

Copy link
Copy Markdown
Collaborator

Summary

At a default 80-column terminal, the Dashboard column of conductor status (and the running-list table shared with conductor stop) was elided by rich to a bare — the one field the command exists to surface, recoverable only by hand from the Port column.

Changes

  • Added _format_started_at to render Started at minute precision in UTC (e.g. 2026-08-11 12:48Z), down from a 32-character microsecond-precision timestamp.
  • Set overflow="fold" on the Dashboard column so a long URL wraps onto a second line instead of cropping. A folded URL is complete and readable; a cropped one is not.
  • --json output is untouched — only the human-readable table rendering changed.
  • _print_running_list is shared with conductor stop, so its listing gets the shorter timestamp too.
  • Updated docs/cli-reference.md and CHANGELOG.md.
  • Test fixtures now write PID files via the real write_pid_file instead of hand-built JSON with a shorter synthetic started_at — the shortcut that let this through undetected in the first place.

Closes#405

Jason Robertand others added 2 commits August 11, 2026 15:41
#405)
At a default 80-column terminal, the `Dashboard` column of `conductor
status` (and the running-list table shared with `conductor stop`) was
elided by rich to a bare `…` — the one field the command exists to
surface. Trim `Started` to minute precision in UTC via a new
`_format_started_at` helper (down from a 32-character microsecond
timestamp) and set `overflow="fold"` on the `Dashboard` column so a
long URL wraps onto a second line instead of being cropped. The
`--json` payload is untouched; only the human-readable table changed.
Test fixtures now write PID files through the real `write_pid_file`
instead of hand-built JSON with a shorter synthetic timestamp, since
that shortcut is what let the cropping through undetected.
Closes#405
Code review of PR #413 turned up two independently-confirmed blocking
issues in _format_started_at:
- .astimezone(UTC) is unguarded and raises OverflowError (not
ValueError) for a timezone-aware value near datetime.min/max. This
crashed `conductor status`/`conductor stop` entirely on a single
malformed PID file, hiding every other running workflow and
violating the "one bad file can't cost you the rest" guarantee
pid.py's own malformed-file handling already provides. Now caught
alongside ValueError, matching the fallback behavior for an
unparseable string.
- The fallback path returns the raw value unbounded (unlike the fixed
17-character happy path), which could reintroduce issue #405's
cropping bug in the Started column instead of Dashboard. Started now
folds too, consistent with Dashboard.
Also:
- Log a warning on the fallback path, matching pid.py's convention for
the same untrusted PID-file data.
- Fix a self-contradictory comment claiming naive `started_at` values
were "always written via datetime.now(UTC)" -- that call always
produces a tz-aware string, so nothing it wrote could ever hit the
naive branch. Reworded to describe the actual defensive intent.
- Move a docstring sentence describing function-wide behavior out of
the `show_url` Args bullet it was incorrectly nested under.
- Reword the CHANGELOG's "conductor status is unreleased, so..."
justification for --json being untouched -- nothing about the JSON
schema changed, so that framing was a non sequitur; the real reason
is the table/audit-log purpose split.
- Note in docs/cli-reference.md that `conductor stop`'s shared listing
also gets the shorter Started timestamp.
- Add regression tests: the OverflowError boundary value, one
malformed started_at not hiding a healthy run, Started's fold
column, and conductor stop's minute-precision rendering (previously
untested despite being explicitly claimed in the PR's own docs).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jrob5756
Jason Robert (jrob5756) marked this pull request as ready for review August 11, 2026 20:33
@jrob5756
Jason Robert (jrob5756) merged commit 76fd33f into mainAug 11, 2026
10 checks passed
@jrob5756
Jason Robert (jrob5756) deleted the fix/405-dashboard-url-cropped branch August 11, 2026 20:42
Jason Robert (jrob5756) pushed a commit that referenced this pull request Aug 11, 2026
main advanced again after the first merge, adding PR #413 (fold the
conductor status/stop dashboard-URL column instead of cropping it,
render Started at minute precision). Only tests/test_cli/test_stop.py
conflicted, on the same TestStopAutoDetect class our self-exclusion
merge touched.
- Added the os/re imports #413 needs alongside our existing imports.
- Kept #413's new test_lists_started_at_minute_precision case.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Jason Robert (jrob5756) pushed a commit that referenced this pull request Aug 11, 2026
Resolves a CHANGELOG.md ordering conflict with #414/#413/#388, which
merged into main while this PR's review was in progress. No other
files conflicted; workflow.py's auto-merge is clean (this branch's
_context_window_anomaly_warned latch and main's new
_pricing_hook_silent_warned latch are independent additions to the
same __init__).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant

@jrob5756