Skip to content

v0.33.0

Choose a tag to compare

@daniel-thom daniel-thom released this 26 May 01:09
· 214 commits to main since this release

This release includes a breaking change to the JSON output of CLI list commands and adds new
public columns (start_time, compute_node_id) to the job table so running jobs can be
observed without waiting for completion. It also lands CSV output, stdin spec input, adaptive
poll backoff in the job runner, TUI pagination/sorting, and a consistent timestamp display policy
across the CLI, TUI, and dashboard.

API version: 0.19.0 → 0.20.0

⚠️ Breaking changes

  • CLI list JSON shape standardized on items (#345). All torc -f json list
    commands now wrap records under {"items": [...]} instead of per-resource keys like jobs,
    results, workflows. This matches the REST API's paginated response shape and lets you
    use jq '.items[]' across every resource type. Migration: replace .jobs / .results /
    .workflows / etc. with .items in your scripts. ID-only commands
    (files list-required-existing, user-data list-missing, list_job_ids) are unchanged.

New features

  • -f csv output for every list command (#346). CSV joins table and json as a first-class
    output format; columns match the table view exactly. Single-record commands and multi-section
    reports reject csv with a clear error.
    • as workflow-spec input (#347). create, run, submit, slurm generate, and
      slurm plan-allocations now accept - to read the spec from stdin, enabling pipelines like
      torc slurm generate w.yaml | torc submit -.
  • start_time and compute_node_id on the job table (#350). Surfaces how long a running
    job has been running and which node it's on, without waiting for completion. The CLI jobs list,
    TUI jobs view, and torc-dash now show compute node and elapsed time for running jobs. The
    fields are cleared on every transition out of Running, including recover and reinitialize,
    so the displayed elapsed time never reflects a killed attempt.
  • Server-side jobs filtering (#344). GET /jobs now supports name and command substring
    filters (LIKE %value%), and the TUI Jobs filter (f) uses them so it searches across the
    entire workflow, not just the loaded page.

CLI / TUI / dashboard

  • Consistent timestamp display (#351). Humans (TUI, dash, CLI table mode, CLI detail views)
    see local time with an explicit ±HHMM offset suffix; JSON keeps the server's raw UTC RFC3339.
    File mtimes get the same treatment. Python's convert_timestamp now returns a tz-aware UTC
    datetime instead of silently inheriting the client's local zone.
  • Adaptive poll backoff in the job runner (#343). Idle polls double up to
    client.run.claim_backoff_max_secs (default 300s), cutting the request rate dramatically on
    large allocations queued with long-running jobs. SIGCHLD still snaps the runner back to the
    base interval immediately, so finishing jobs don't pay the backoff cost.
  • TUI pagination + sorting parity (#344). List views load on demand at 250 records per page
    with ]/[ to page through Workflows, Jobs, Results, and Compute Nodes. Workflows and
    Compute Nodes gain hotkey sorting with header indicators.
  • TUI Results tab improvements (#342, cd223e1). New Runtime column (sorted with E) and
    Completion Time column; Run and Attempt columns removed for clarity.
  • CLI results trimmed (cd223e1). torc results list hides WF ID, Run ID, and Attempt from
    the table; the data remains available in JSON and CSV.
  • More fields in CLI detail views (#344). torc workflows get prints execution_config;
    torc jobs get shows job priority; torc workflows list/get surface run_id,
    is_canceled, and is_archived.
  • TUI Workflows default sort is now newest-first (#352), matching the dashboard.

Bug fixes

  • Dashboard status badges and Peak CPU column (#352). The dash was treating
    JobStatus/ResultStatus as integer indices into local arrays, so badges fell back to
    status-unknown, the Jobs table "Elapsed" column always showed -, and the DAG visualizer
    rendered every node in the default gray. Status is now routed through string-keyed helpers
    everywhere. The Results tab was also showing avg_cpu_percent instead of peak_cpu_percent;
    it now matches the CLI.
  • Peak CPU restored in torc results list/get (8934410). The list column was showing
    Avg CPU; peak_cpu_percent is always populated (sacct's AveCPU is copied into peak as a
    fallback), so it now reads "Peak CPU %" consistently with Peak Mem and the TUI.
  • Slurm job-runner log path lookup in reports (18c2589). Reports were rebuilding the log
    filename from compute_node.hostname / compute_node.pid, but the runner writes it using
    SLURM_NODEID / SLURM_TASK_PID. The compute node's scheduler JSON now carries those values
    so the path matches; older nodes fall back to the previous behavior.
  • job-dependencies list subcommands (#345). The three job-dependencies list subcommands
    were leaking pagination metadata and not auto-paginating; they now use the standard
    paginate-then-emit-items shape.

What's Changed

Full Changelog: v0.32.0...v0.33.0