Skip to content

PRD: Process Output panel rework #180

Description

@csfh

Problem Statement

The Process Output panel currently shows output rows in a compact but generic format. After introducing explicit output scopes with Logs for aggregate Process Output and Logs (process) for selected Process Output, the panel needs a clearer layout that can support scoped output, aggregate output, future scope switching, and better readability without overloading the Manifest panel.

Developers need to understand which Managed Process produced each output line, especially in aggregate output, while preserving fast keyboard navigation and dense terminal ergonomics.

Solution

Rework the Process Output panel around explicit scope and clearer output row structure. The first pass can continue using [process] prefixes for aggregate output rows, but the PRD should establish the direction for a future dedicated process column and scope affordance.

The panel should keep Logs (process) style scoping for selected-process output and Logs for aggregate output when no process is selected. The space action in the Manifest panel toggles selected-process scope and aggregate scope. Process Output should reset stale selected/expanded output rows when scope changes and should preserve tail behavior consistently.

User Stories

  1. As a developer, I want Logs (app) to show output scoped to the selected Managed Process, so that I know the output context.
  2. As a developer, I want Logs to show aggregate output when no Managed Process is selected, so that I can debug startup races across the Development Stack.
  3. As a developer, I want aggregate output rows to include [process], so that I can identify which Managed Process produced each line.
  4. As a developer, I want aggregate output sorted by timestamp, so that cross-process events appear in a meaningful timeline.
  5. As a developer, I want ties in aggregate output ordering to be stable by Manifest process order, so that rows do not jump between renders.
  6. As a developer, I want selected-process output to avoid [process] prefixes by default, so that scoped output remains less cluttered.
  7. As a developer, I want the Process Output panel title to preserve selected process identity at narrow widths, so that output scope is never ambiguous.
  8. As a developer, I want long process names in titles to truncate consistently, so that panel titles remain stable.
  9. As a developer, I want scope changes to clear selected and expanded output rows, so that stale row selection does not leak across scopes.
  10. As a developer, I want selecting a process from aggregate output mode to reset output position to bottom when tail is enabled, so that I immediately see the selected process's latest output.
  11. As a developer, I want selecting a process from aggregate output mode to preserve browsing intent when tail is paused, so that I do not lose my place unnecessarily.
  12. As a developer, I want clearing Logs (process) to clear only selected process output, so that other process output remains available.
  13. As a developer, I want clearing Logs to clear all Manifest process output, so that aggregate output can be reset intentionally.
  14. As a developer, I want the footer shortcut to say all logs when a process is selected, so that I know space will switch to aggregate output.
  15. As a developer, I want the footer shortcut to say service logs or process-scope language when no process is selected, so that I know space will return to scoped output.
  16. As a developer, I want Process Output rows to preserve timestamp, stream, message, and row metadata, so that existing output interactions remain useful.
  17. As a developer, I want stderr output to remain visually distinct, so that errors remain easy to spot.
  18. As a keyboard user, I want output row selection and expansion to continue working in scoped and aggregate modes, so that I can inspect long output lines.
  19. As a keyboard user, I want home, end, page up/down, g, G, f, and c behaviors to remain consistent after the rework, so that existing navigation habits still work.
  20. As a developer, I want output rows to avoid wrapping by default, so that vertical density remains predictable.
  21. As a developer, I want expanded rows to preserve full output line access, so that long lines can still be inspected.
  22. As a developer, I want the output panel to avoid introducing dead scope controls before all-scope behavior exists, so that the UI does not promise unavailable actions.
  23. As a developer, I want a future path to a dedicated process column, so that aggregate output can become more scannable without blocking the first pass.
  24. As a maintainer, I want Process Output scope to be modeled explicitly, so that future filtering and all-output behavior can be tested without relying on visual side effects.

Implementation Decisions

  • Keep current first-pass aggregate prefix style: [process] message.
  • Use explicit title semantics: Logs for aggregate Manifest output and Logs (name) for scoped output.
  • Treat no selected Managed Process as aggregate Manifest output scope.
  • Keep selected process scope as the default when a Manifest row is selected.
  • Use space from the Manifest panel to toggle selected-process scope and aggregate scope.
  • Reset selected and expanded Process Output rows when scope changes.
  • Sort aggregate Manifest output by timestamp.
  • Add stable tie-breaking for identical timestamps using Manifest process order and per-buffer row order.
  • Keep output row density and current keyboard interactions unless the rework explicitly changes them.
  • Do not add a dedicated process column in this PRD unless it becomes small enough to do safely; keep it as the next step.

Testing Decisions

  • Test Process Output scope through UI controls or output selection state, not by relying on screenshots.
  • Test aggregate output includes process identity in row messages.
  • Test aggregate output ordering with controlled timestamps and service order tie-breakers.
  • Test scope changes reset selected and expanded output rows.
  • Test clear behavior differs between scoped output and aggregate output.
  • Test title formatting for selected-process and aggregate modes.
  • Use existing UI control seams for output navigation and clearing where possible.
  • Add focused formatter tests only if output row formatting is extracted into a pure helper.

Out of Scope

  • Manifest Process State grammar cleanup.
  • Selected Process detail strip and live metrics.
  • Dedicated process column as a required deliverable.
  • Search, filtering, or advanced output query language.
  • Persisting Process Output beyond the active Workspace.
  • Changing how External Runtime output streaming is sourced.

Further Notes

The domain term is Process Output, but the Workspace panel title may continue to use Logs as concise UI copy if that remains the product language for the panel.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions