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
- As a developer, I want
Logs (app) to show output scoped to the selected Managed Process, so that I know the output context.
- 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.
- As a developer, I want aggregate output rows to include
[process], so that I can identify which Managed Process produced each line.
- As a developer, I want aggregate output sorted by timestamp, so that cross-process events appear in a meaningful timeline.
- 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.
- As a developer, I want selected-process output to avoid
[process] prefixes by default, so that scoped output remains less cluttered.
- 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.
- As a developer, I want long process names in titles to truncate consistently, so that panel titles remain stable.
- As a developer, I want scope changes to clear selected and expanded output rows, so that stale row selection does not leak across scopes.
- 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.
- 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.
- As a developer, I want clearing
Logs (process) to clear only selected process output, so that other process output remains available.
- As a developer, I want clearing
Logs to clear all Manifest process output, so that aggregate output can be reset intentionally.
- 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.
- 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.
- As a developer, I want Process Output rows to preserve timestamp, stream, message, and row metadata, so that existing output interactions remain useful.
- As a developer, I want stderr output to remain visually distinct, so that errors remain easy to spot.
- 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.
- 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.
- As a developer, I want output rows to avoid wrapping by default, so that vertical density remains predictable.
- As a developer, I want expanded rows to preserve full output line access, so that long lines can still be inspected.
- 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.
- 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.
- 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.
Problem Statement
The Process Output panel currently shows output rows in a compact but generic format. After introducing explicit output scopes with
Logsfor aggregate Process Output andLogs (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 andLogsfor aggregate output when no process is selected. Thespaceaction 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
Logs (app)to show output scoped to the selected Managed Process, so that I know the output context.Logsto show aggregate output when no Managed Process is selected, so that I can debug startup races across the Development Stack.[process], so that I can identify which Managed Process produced each line.[process]prefixes by default, so that scoped output remains less cluttered.Logs (process)to clear only selected process output, so that other process output remains available.Logsto clear all Manifest process output, so that aggregate output can be reset intentionally.all logswhen a process is selected, so that I knowspacewill switch to aggregate output.service logsor process-scope language when no process is selected, so that I knowspacewill return to scoped output.home,end, page up/down,g,G,f, andcbehaviors to remain consistent after the rework, so that existing navigation habits still work.Implementation Decisions
[process] message.Logsfor aggregate Manifest output andLogs (name)for scoped output.spacefrom the Manifest panel to toggle selected-process scope and aggregate scope.Testing Decisions
Out of Scope
Further Notes
The domain term is Process Output, but the Workspace panel title may continue to use
Logsas concise UI copy if that remains the product language for the panel.